貌似没明白这句话的意思in
JavaScript 中的关键字。
看看这个代码片段(http://jsfiddle.net/3LPZq/ http://jsfiddle.net/3LPZq/ ):
var x = [1,2]
for(i in x){
document.write(x[i]);
}
当在 jsfiddle 中运行时,它不仅打印数组中包含的值,还打印数组对象的所有属性和方法。
当我像这样改变它时(http://jsfiddle.net/4abmt/ http://jsfiddle.net/4abmt/ ):
$(document).ready(function(){
var x = [1,2]
for(i in x){
document.write(x[i]);
}});
它只打印值 1 和 2。
为什么会发生这种情况?这是由 jQuery 引起的还是in
关键字取决于文档是否完全加载?
发生这种情况是因为原型继承。一个对象不仅显示它自己的属性,还显示它所有祖先的属性。
要仅查找对象自己的属性,请使用obj.hasOwnProperty(prop)
.
var x = [1,2];
for (var i in x) {
if (x.hasOwnProperty(i)) {
document.write(x[i]);
}
}
请参阅 MDN 文档拥有自己的财产 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/hasOwnProperty.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)