var obj = {
name: "Simon",
age: "20",
clothing: {
style: "simple",
hipster: false
}
}
for(var propt in obj){
console.log(propt + ': ' + obj[propt]);
}
变量如何表示对象的属性?它不是内置方法或属性。为什么它会提出对象中的每个属性?propt
网友回答:
从 JavaScript 1.8.5 开始,您可以使用它来获取在对象本身上定义的属性数组(返回 true 的属性)。Object.keys(obj)
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 循环更好(也更具可读性)。
这些浏览器支持它:
有关更多信息,请参阅 Mozilla 开发者网络 Object.keys() 的参考。
网友回答:
循环访问属性需要以下附加检查:hasOwnProperty
for (var prop in obj) {
if (Object.prototype.hasOwnProperty.call(obj, prop)) {
// do stuff
}
}
这是必要的,因为对象的原型包含对象的附加属性,这些属性在技术上是对象的一部分。这些附加属性继承自基对象类,但仍是 的属性。obj
hasOwnProperty
只需检查这是否是特定于此类的属性,而不是从基类继承的属性。
也可以通过对象本身调用:hasOwnProperty
if (obj.hasOwnProperty(prop)) {
// do stuff
}
但是,如果对象具有同名的不相关字段,这将失败:
var obj = { foo: 42, hasOwnProperty: 'lol' };
obj.hasOwnProperty('foo'); // TypeError: hasOwnProperty is not a function
这就是为什么调用它更安全的原因:Object.prototype
var obj = { foo: 42, hasOwnProperty: 'lol' };
Object.prototype.hasOwnProperty.call(obj, 'foo'); // true
网友回答:
女孩和男孩,我们在 2019 年,我们没有那么多时间打字……所以让我们做这个很酷的新花哨的 ECMAScript 2016:
Object.keys(obj).forEach(e => console.log(`key=${e} value=${obj[e]}`));
模板简介:该模板名称为【变量如何表示对象的属性?它不是内置方法或属性。为什么它会提出对象中的每个属性?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。