Javascript学习笔记的对象文本(四):在循环中
第一个例子:中毒 / / object.prototype
object.prototype.bar = 1;
var:2 };
对于(var I){
console.log(我); / /输出杆和Moo
}
在这里我们要注意两点:一是在循环将忽略错误的可枚举集合的属性。例如,数组的长度属性。二是在遍历整个原型链,这将影响性能时,原型链太长。
枚举是一个很奇怪的词。事实上,你在Javascript中找到它的影子是很难的,这实际上是从Ruby的作者参考。创建枚举的目的不是独立使用,但使用混合的方式。许多原型使用枚举的方法,所以它可以说是原型的基石。没有详细的介绍,并详细可参考-枚举。
因为我们不能改变对循环本身,所以我们要采用其他方法来过滤掉那些不想出现在循环内的财产,通过Javascript对象的学习笔记(三):我们知道,hasownproperty hasownproperty方法可以做到这一点。
使用hasownproperty过滤
前面的示例仍在使用。
中毒 / / object.prototype
object.prototype.bar = 1;
var:2 };
对于(var I){
如果(foo.hasownproperty(I)){
console.log(我);
}
}
这是写的唯一正确的道路,因为我们使用的hasownproperty方法,所以这个时候只有哞输出。如果hasownproperty方法是不适用的,一个错误发生时,object.prototype扩展。
现在很多框架会选择延长的方法从object.prototype,所以当我们使用这些框架,我们将用在循环,不过滤的hasownproperty遇到问题。
总结
建议养成良好的习惯hasownproperty滤波特性,不做任何假设的运行环境,无论是土生土长的原型对象的扩展。