Javascript中的hasOwnProperty
来源:互联网 发布:网络真人赌博真实吗 编辑:程序博客网 时间:2024/06/03 04:22
判断一个属性是定义在对象本身而不是继承自原型链,我们需要使用从 Object.prototype
继承而来的 hasOwnProperty
方法。hasOwnProperty
方法是 Javascript
中唯一一个处理对象属性而不会往上遍历原型链的。
// Poisoning Object.prototypeObject.prototype.bar = 1;var foo = {goo: undefined};foo.bar; // 1'bar' in foo; // truefoo.hasOwnProperty('bar'); // falsefoo.hasOwnProperty('goo'); // true
在这里,只有 hasOwnProperty
能给出正确答案,这在遍历一个对象的属性时是非常必要的。Javascript
中没有其他方法能判断一个属性是定义在对象本身还是继承自原型链。
hasOwnProperty 作为属性
Javascript
并未将 hasOwnProperty
设为敏感词,这意味着你可以拥有一个命名为 hasOwnProperty
的属性。这个时候你无法再使用本身的 hasOwnProperty
方法来判断属性,所以你需要使用外部的 hasOwnProperty
方法来进行判断。
var foo = { hasOwnProperty: function() { return false; }, bar: 'Here be dragons'};foo.hasOwnProperty('bar'); // always returns false// Use another Object's hasOwnProperty and call it with 'this' set to foo({}).hasOwnProperty.call(foo, 'bar'); // true// It's also possible to use hasOwnProperty from the Object// prototype for this purposeObject.prototype.hasOwnProperty.call(foo, 'bar'); // true
总结
当判断对象属性存在时,hasOwnProperty
是唯一可以依赖的方法。这里还要提醒下,当我们使用 for in loop
来遍历对象时,使用 hasOwnProperty
将会很好地避免来自原型对象扩展所带来的困扰。
转载于: https://segmentfault.com/a/1190000000480531
0 0
- Javascript中的hasOwnProperty
- javascript中的hasOwnProperty和isPrototypeOf
- Javascript中的for-in循环和hasOwnProperty
- javascript中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
- JavaScript中的函数hasOwnProperty()和isPrototypeOf()的一些理解
- JavaScript中的hasOwnProperty和isPrototypeOf方法使用实例
- JavaScript hasOwnProperty() 函数详解
- JavaScript hasOwnProperty() 函数详解
- JavaScript hasOwnProperty() 函数
- JavaScript hasOwnProperty() 函数详解
- Javascript hasOwnProperty 方法 & in 关键字
- javascript--hasOwnProperty()+isPrototypeof()+in方法
- javascript hasOwnProperty(),in操作符
- hasOwnProperty
- hasOwnProperty
- hasOwnProperty
- hasOwnProperty()
- hasOwnProperty
- hdu 1576 扩展欧几里得
- Spring定时器--时间设置规则
- Obbjective-c - description方法和 description方法的重写
- 配置Wireshark在非root用户下运行
- 简约选项卡效果
- Javascript中的hasOwnProperty
- 11.OpenGL--点参数
- mysql数据库设置远程连接权限
- Looper
- java基本加密算法
- html列表可滚动
- canvas的用法
- Spring 注解
- 按钮hover状态的css实现