首页 > JavaScript > 变量如何表示对象的属性?它不是内置方法或属性。为什么它会提出对象中的每个属性?

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

上一篇 下一篇

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 循环更好(也更具可读性)。

这些浏览器支持它:

  • 火狐(壁虎): 4 (2.0)
  • 铬: 5
  • IE浏览器:9

有关更多信息,请参阅 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】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 207次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-21
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
自适应 html5 微信文章 企业网站 微信图片 微信公众平台 微信模板 响应式 单页式简历模板 微信素材
您可能会喜欢的其他模板