JavaScript检测实例属性, 原型属性


Posted in Javascript onFebruary 04, 2015

0.前提

JavaScript对象的属性分为两种存在形态. 一种是存在实例中, 另一是存在原型对象中.

根据上述, 检测属性的时候会出现4种情况

既不存在实例中, 也不存在原型对象中
存在实例中, 不存在原型对象中
不存在实例中, 存在原型对象中
既存在实例中, 也存在原型对象中

1.hasOwnPrototype()

hasOwnPrototype()接受一个字符串格式的属性名称, 如果实例本身存在该属性(情况2/情况4), 返回true. 否则, 返回false(情况1/情况3).

functino Person() {}

Person.prototype.name = 'apple';

var person1 = new Person();

var person2 = new Person();

person1.name = 'banana';

console.log(person1.hasOwnPrototype(name));  //true

console.log(person2.hasOwnPrototype(name));  //false

2.in操作符

in操作符无论属性是存在实例本身中, 还是原型对象中, 就会返回true(情况2/情况3/情况4); 否则, 返回false(情况1).

console.log('name' in person1);  //true

console.log('name' in person2);  //true

3.检测存在原型的属性

结合in操作符和hasOwnProperty()就可以自定义函数来检测原型中是否存在给定的属性.

function hasPrototypeProperty(object, name) {

     return !object.hasOwnPrototype(name) && (name in object);

}

console.log(hasPrototypeProperty(person1, 'name')); //false

console.log(hasPrototypeProperty(person2, 'name')); //true

原型中存在给定属性, 返回true(情况3). 否则返回false(情况1/情况2/情况4).

以上就是本文的全部内容了,希望大家能够喜欢

Javascript 相关文章推荐
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
May 08 Javascript
一个JavaScript变量声明的知识点
Oct 28 Javascript
JavaScript动态添加style节点的方法
Jun 09 Javascript
js控制文本框输入的字符类型方法汇总
Jun 19 Javascript
Bootstrap编写导航栏和登陆框
May 30 Javascript
Bootstrap的Refresh Icon也spin起来
Jul 13 Javascript
JavaScript面向对象分层思维全面解析
Nov 22 Javascript
js微信支付实现代码
Dec 22 Javascript
javascript删除html标签函数cIsHTML
Jan 09 Javascript
详解vue mint-ui源码解析之loadmore组件
Oct 11 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
Apr 12 Javascript
7个你应该知道的JS原生错误类型
Apr 29 Javascript
Jquery Ajax xmlhttp请求成功问题
Feb 04 #Javascript
js对字符的验证方法汇总
Feb 04 #Javascript
AngularJS内置指令
Feb 04 #Javascript
javascript内置对象操作详解
Feb 04 #Javascript
js判断文本框剩余可输入字数的方法
Feb 04 #Javascript
javascript 兼容各个浏览器的事件
Feb 04 #Javascript
浅谈js中变量初始化
Feb 03 #Javascript
You might like
基于php无限分类的深入理解
2013/06/02 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
Python实现冒泡排序的简单应用示例
2017/12/11 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
Python中的引用知识点总结
2019/05/20 Python
python基于递归解决背包问题详解
2019/07/03 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
高中生自我鉴定范文
2013/10/30 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
求职信内容怎么写
2014/05/26 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
会计试用期自我评价
2015/03/10 职场文书
雷锋观后感
2015/06/10 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
导游词之山东孔庙
2019/11/04 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记