javascript中hasOwnProperty()⽅法使⽤指南
概述
hasOwnProperty() ⽅法⽤来判断某个对象是否含有指定的⾃⾝属性。
语法
obj.hasOwnProperty(prop)
参数
•prop
•要检测的属性名称。
描述
所有继承了 Object.prototype 的对象都会从原型链上继承到 hasOwnProperty ⽅法,这个⽅法可以⽤来检测⼀个对象是否含有特定的⾃⾝属性,和 in 运算符不同,该⽅法会忽略掉那些从原型链上继承到的属性。
⽰例
例1:使⽤ hasOwnProperty ⽅法判断某对象是否含有特定的⾃⾝属性
下⾯的例⼦检测了对象 o 是否含有⾃⾝属性 prop:
复制代码代码如下:
o = new Object();o.prop = 'exists';function changeO() {
delete o.prop;}o.hasOwnProperty('prop');
// 返回 true
changeO();
o.hasOwnProperty('prop');
// 返回 false
例2:⾃⾝属性和继承属性的区别
下⾯的例⼦演⽰了 hasOwnProperty ⽅法对待⾃⾝属性和继承属性的区别:
复制代码代码如下:
o = new Object();o.prop = 'exists';o.hasOwnProperty('prop');
// 返回 true
o.hasOwnProperty('toString');
// 返回 false
o.hasOwnProperty('hasOwnProperty');
// 返回 false
例3:遍历⼀个对象的所有⾃⾝属性
下⾯的例⼦演⽰了如何在遍历⼀个对象的所有属性时忽略掉继承属性,注意这⾥ for..in 循环只会遍历可枚举属性,这通常就是我们想要的,直接使⽤ OwnPropertyNames() ⽅法也可以实现类似的需求。
复制代码代码如下:
var buz = {
fog: 'stack'};
for (var name in buz) {
if (buz.hasOwnProperty(name)) {
alert("this is fog (" + name + ") for sure. Value: " + buz[name]);
}
else {
alert(name);
// toString or something else
}}
例4: hasOwnProperty ⽅法有可能被遮蔽
如果⼀个对象拥有⾃⼰的 hasOwnProperty ⽅法, 则原型链上的同名⽅法会被遮蔽(shadowed):复制代码代码如下:
var foo = {
hasOwnProperty: function() {
return false;
},
in运算符的含义bar: 'Here be dragons'};foo.hasOwnProperty('bar');
// 始终返回 false
// 如果担⼼这种情况,可以直接使⽤原型链上真正的 hasOwnProperty ⽅法
({}).hasOwnProperty.call(foo, 'bar');
// true
Object.prototype.hasOwnProperty.call(foo, 'bar');
// true
以上就是本⽂所述的全部内容了,希望⼤家能够喜欢。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论