结合对Javascript和hasownproperty环

与运营商相比,在圆形物体的性质会遍历原型链,在不会读不可枚举属性,如数组的长度属性。总结,当检测一个对象是否有一个属性,hasownproperty是完成这一任务的唯一途径。在对循环,建议添加hasownproperty判断,可以有效地避免通过扩展本地原型所引起的误差。

与运营商相比,在圆形物体的性质会遍历原型链,在不会读不可枚举属性,如数组的长度属性。

复制代码代码如下所示:
/ /扩展object.prototype
object.prototype.bar = 1;
var:2 };
对于(var I){
console.log(我); / /酒吧和MoO输出
}


我们不可能改变循环中的行为。当我们需要滤波回路中的一些性质,我们可以用对象原型的hasownproperty方法完成。

提示:因为for循环总是遍历整个原型链,遍历多个继承对象时效率较低。

hasownproperty滤波

复制代码代码如下所示:
例如,富对象
对于(var I){
如果(foo.hasownproperty(I)){
console.log(我);
}
}


在这个例子中,hasownproperty用来输出哞。如果hasownproperty是不容忽视的,代码将输出的结果出人意料,因为当地的原型(如对象的原型)已扩大。

原型框架是扩展Javascript原始对象的类库,被广泛使用。它的缺点也很明显。当框架介绍,如果我们不使用hasownproperty过滤和判断,输出结果肯定不是你想要的。

最佳实践

当在推荐,hasownproperty总是用来判断,没有人能保证运行代码的环境污染。

hasownproperty
为了检查一个对象是否具有自定义的属性不在原型链,有必要使用hasownproperty方法。任何对象都有这种方法。它从Object.prototype。

提示:我们不能完全判断一个属性是未定义的,因为可能存在的性质,但它的价值undefined.hasownproperty是Javascript中的唯一的方法,可以处理对象的属性没有遍历原型链。

复制代码代码如下所示:
/ /扩展object.prototype
object.prototype.bar = 1;
var:未定义};

foo.bar / / 1;
bar'in foo; / /真的

foo.hasownproperty('bar '); / /假
foo.hasownproperty('goo '); / /真的


只有hasownproperty给出正确的结果,这是非常必要的,遍历对象的属性。没有其他方法可以排除对象原型链上定义的属性。

hasownproperty作为属性

Javascript不保护hasownproperty关键字或保留字。因此,如果一个对象具有相同名称的属性,需要使用扩展hasownproperty得到正确的结果。

复制代码代码如下所示:
var { { { {
HasOwnProperty:函数(){
返回false;
},
酒吧:这是龙的
};
foo.hasownproperty('bar '); / /总是返回false
/ /使用另一个hasownproperty和这个设置foo调用它
{ }。hasownproperty.call(Foo,'bar '); / /真的


总结
当检测一个对象是否有一个属性,hasownproperty是完成这一任务的唯一途径。在对循环,建议添加hasownproperty判断,可以有效地避免通过扩展本地原型所引起的误差。