hasOwnProperty
函数
为了判断一个对象是否包含自定义属性而不是原型链上的属性,
我们需要使用继承自 Object.prototype
的 hasOwnProperty
方法。
注意: 通过判断一个属性是否 undefined
是不够的。
因为一个属性可能确实存在,只不过它的值被设置为 undefined
。
hasOwnProperty
是 JavaScript 中唯一一个处理属性但是不查找原型链的函数。
// 修改Object.prototype
Object.prototype.bar = 1;
var foo = {goo: undefined};
foo.bar; // 1
'bar' in foo; // true
foo.hasOwnProperty('bar'); // false
foo.hasOwnProperty('goo'); // true
只有 hasOwnProperty
可以给出正确和期望的结果,这在遍历对象的属性时会很有用。
没有其它方法可以用来排除原型链上的属性,而不是定义在对象自身上的属性。
hasOwnProperty
作为属性
JavaScript 不会保护 hasOwnProperty
被非法占用,因此如果一个对象碰巧存在这个属性,
就需要使用外部的 hasOwnProperty
函数来获取正确的结果。
var foo = {
hasOwnProperty: function() {
return false;
},
bar: 'Here be dragons'
};
foo.hasOwnProperty('bar'); // 总是返回 false
// 使用其它对象的 hasOwnProperty,并将其上下为设置为foo
{}.hasOwnProperty.call(foo, 'bar'); // true
结论
当检查对象上某个属性是否存在时,hasOwnProperty
是唯一可用的方法。
同时在使用 for in
loop 遍历对象时,推荐总是使用 hasOwnProperty
方法,
这将会避免原型对象扩展带来的干扰。
分享到:
相关推荐
JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。 hasOwnProperty()使用方法: object.hasOwnProperty(proName)其中参数object是必选项。一个对象的实例。proName是必...
js-Polyfill_Object-...//Polyfilled & Native:console.dir([obj1.hasOwnProperty('a'),//trueobj1.hasOwnProperty('b'),//trueobj1.hasOwnProperty('c'),//falseobj2.hasOwnProperty('a'),//trueobj2.hasOwnProperty
hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。下面通过本文给大家分享JavaScript hasOwnProperty() 函数实例讲解,感兴趣的朋友一起看看吧
hasOwnProperty() 方法用来判断某个对象是否含有指定的自身属性。 语法 obj.hasOwnProperty(prop) 参数 •prop •要检测的属性名称。 描述 所有继承了 Object.prototype 的对象都会从原型链上继承到 ...
JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。 使用方法:object.hasOwnProperty(proName) 其中参数object是必选项。一个对象的实例。proName是必选项。一个属性名称...
JavaScript isPrototypeOf和hasOwnProperty的使用技巧,需要的朋友的朋友可以参考下。
下面小编就为大家带来一篇详谈js使用in和hasOwnProperty获取对象属性的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
in操作符只要通过对象能访问到属性就返回true。hasOwnProperty()只在属性存在于实例中时才返回true。下面通过本文给大家分享JavaScript中in和hasOwnProperty区别详解,感兴趣的朋友一起看看吧
#适用于Web开发人员JavaScript ### JavaScript编程,Backbone.js,面向对象的编程,设计模式和MVC 此JavaScript课程是为有兴趣在最需要的库和框架中扩展JavaScript设计模式知识及其实际使用的Web开发人员设计的。...
// Poisoning Object.prototype Object.prototype.bar = 1; var foo = {goo: undefined}; foo.bar;...Javascript 中没有其他方法能判断一个属性是定义在对象本身还是继承自原型链。 hasOwnProperty 作为
hasOwnProperty,porpertyIsEnumerable 致电申请 功能编程 模块化 回呼 事件驱动设计 JavaScript设计模式 建设者 模组 辛格尔顿 MVC 依赖注入 Backbone.js 单页应用 楷模 观看次数 馆藏 路由器 同步API 工具 Git...
js代码-去重:filter + hasOwnProperty
教程名称:Javascript DOM编程视频教程(17讲) 课程目录:【】1.JavascriptDOM编程_在什么位置编写JS代码【】10.JavascriptDOM编程_删除节点【】11.JavascriptDOM编程_添加删除节点的实验...
当检测某个对象是否拥有某个属性时,hasOwnProperty 是唯一可以完成这一任务的方法,在 for in 循环时,建议增加 hasOwnProperty 进行判断,可以有效避免扩展本地原型而引起的错误
hasOwnProperty :如果 object 具有指定名称的属性,那么方法返回 true;反之则返回 false。
一些JavaScript技巧可以使您的代码比以前更加出色! JavaScript是一种很棒的语言,但是您不时会迷失它现在提供的众多功能。 该存储库将为您提供一些简短明了的提示,以改进您的代码或使事情更容易阅读或更好地阅读...