迭代对象属性

迭代对象属性

var obj = {

    name: "Simon",

    age: "20",

    clothing: {

        style: "simple",

        hipster: false

    }

}


for(var propt in obj){

    console.log(propt + ': ' + obj[propt]);

}

变量如何propt表示对象的属性?它不是内置方法或属性。为什么它会出现在对象中的每个属性?



繁星coding
浏览 781回答 4
4回答

万千封印

迭代属性需要这个额外的hasOwnProperty检查:for (var property in object) {     if (object.hasOwnProperty(property)) {         // do stuff     }}这是必要的,因为对象的原型包含对象的附加属性,这些属性在技术上是对象的一部分。这些附加属性继承自基础对象类,但仍然是属性object。hasOwnProperty 只需检查这是否是特定于此类的属性,而不是从基类继承的属性。

守着星空守着你

从JavaScript 1.8.5开始,您可以使用Object.keys(obj)获取在对象本身上定义的属性数组(返回true的属性obj.hasOwnProperty(key))。Object.keys(obj).forEach(function(key,index) {     // key: the name of the object key     // index: the ordinal position of the key within the object });这比使用for-in循环更好(也更可读)。它支持这些浏览器:Firefox(Gecko):4(2.0)Chrome:5Internet Explorer:9有关更多信息,请参阅Mozilla Developer Network Object.keys()的参考。

眼眸繁星

这是for...in statement(MDN,ECMAScript规范)。你可以把它读作“ FOR每个属性IN的obj对象,每个属性分配给PROPT依次变量”。
打开App,查看更多内容
随时随地看视频慕课网APP