javascript - for-in输出
本文介绍了javascript - for-in输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
var oDome = document.getElementById('dome');
Object.prototype.move = function(json){
for(var key in json){
console.log(key)
//为什么输出的是 width,height,move ?
//不是应该只有width,height吗?
}
console.log(json)
};
oDome.move({
'width':'200px',
'height':'300px'
});
解决方案
以任意序迭代一个对象的可枚举属性。
循环将迭代对象的所有可枚举属性和从它的构造函数的 prototype 继承而来的(包括被覆盖的内建属性)。
在你的例子中,move
属性在Object
构造函数的原型里面,而所有对象都是Object
的实例,所以枚举任何一个对象的属性都会看到它。
解决方法有两个——
-
使用
hasOwnProperty
方法,检验属性是否是其本身所含有的for(var key in json){ if(json.hasOwnProperty(key)) { console.log(key); } }
-
将
move
的属性设置为不可枚举Object.defineProperty(Object.prototype, "move", { enumerable: false });
这篇关于javascript - for-in输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文