迭代对象属性

2024-04-07

var obj = {
    name: "Simon",
    age: "20",
    clothing: {
        style: "simple",
        hipster: false
    }
}

for(var propt in obj){
    console.log(propt + ': ' + obj[propt]);
}

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


迭代属性需要这个额外的hasOwnProperty check:

for (var prop in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, prop)) {
        // do stuff
    }
}

这是必要的,因为对象的原型包含该对象的附加属性,这些属性在技术上是该对象的一部分。这些附加属性是从基对象类继承的,但仍然是obj.

hasOwnProperty https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

迭代对象属性 的相关文章

随机推荐

  • 在 Nuget 的构建后获取版本

    Code if ConfigurationName Release cd ProjectDir nuget spec Entities f nuget pack DeusPak Entities csproj Prop Configurat
  • Eclipse 图形布局不显示任何内容

    I am doing a mobile application on Eclipse and once I re installed my Android SDK after installation something odd happe
  • Twitter Bootstrap:使表单输入和按钮与 Chrome 和 Firefox 中的高度相同

    Using Twitter 引导程序 2 3 2 http twitter github io bootstrap base css html forms我有一个input append form
  • 操作栏溢出不显示

    我正在为 Sherlock 设置一个带有 3 个项目 图标的操作栏 在 ICS 模拟器上运行时 我只能看到 2 个图标 而且 没有溢出菜单 那三个点图标 如果我按手机的菜单按钮 我只会看到第三个图标 我是否必须强制使用溢出图标 如果是的话我
  • 如何在 Objective-C 中包装 C++ 库?

    我有一个 C 库 仅限 h 其中包含数据结构的实现 我想在我的 iPhone 应用程序中使用它 首先 我用 Objective C 编写了一个包装器作为一个类 通过组合 它具有 C 类的 ivar 然后我 有义务 将包装类扩展更改为 mm
  • Angular 的过滤器问题

    明确地说 我对 Angular 上的过滤器有一个大的小问题 附加过滤器的输入搜索 如果你看到这个例子 这正是我想要的 http plnkr co edit FJ45nV6gdwp3SkRglPeW p preview 实际上 我用我的应用程
  • 使用自然键的 Django loaddata 未查询正确的外键

    这是我的问题 我正在尝试加载一些与另一个模型具有自然键关系的数据 我修改了父模型以生成自然键 我使用以下命令从旧数据库导出数据 manage py dumpdata resources image n indent 4 gt images
  • 如何使用 Python 与 ChatGPT 聊天?

    我要求 ChatGPT 向我展示如何使用 OpenAi 的 API 在终端窗口中与其进行交互 它生成了代码 我对其进行了一些修改 以便完成我想要的操作 这是Python代码 import requests with open api key
  • 将 cellpadding 添加到 Java JTable

    我正在尝试实现 Swing JTable 我按照教程进行操作http docs oracle com javase tutorial uiswing components table html simple http docs oracle
  • 如何使用 RequireJS 构建多个页面

    如何使用RequireJS构建多个页面 就像下面的示例一样 在 app js 中声明每个类是正确的做法吗 有每个 html 文件来声明 我想避免的是当用户到达网站的第一页时加载所有脚本 main js 定义所有外部依赖项 require b
  • 如何为图像中的每个对象着色不同的颜色

    我遇到以下问题 我有黑白图像 我必须对其进行着色 图像中的每个白色 斑点 代表一个对象的实例 我想用新颜色为每个对象着色 但对于每个图像我想使用相同的颜色方案 例如 第一张图片 3 个对象 gt 使用的颜色 红色 绿色 黄色 第二张图片 2
  • Android SDK 管理器未安装组件

    不确定我在这里做错了什么 我安装了 Android SDK Manager 现在正在尝试安装 Android Dev 网站建议的平台 单击安装后 我收到一条错误消息 指出管理器无法在 Android 目录中创建临时文件夹 所以我创造了它 现
  • 创建一个用于切换 jQuery 选项卡的“下一步”按钮

    如何创建一个滚动到下一个 jQuery 选项卡的按钮 我希望选项卡中有一个下一个按钮 可以滚动到下一个选项卡 有点像分步教程 如何才能做到这一点 到目前为止我的代码如下 HTML div ul li a href fragment 1 sp
  • 使用 MVVM 时将事件放在哪里?

    我应该将所有事件放在视图代码后面还是有更合适的方法 例如将命令放在 ViewModel 中 例如 我想在双击数据网格行时打开选项卡 我应该在哪里处理这个事件 不 你不应该将事件放在代码后面 在MVVM 模型 视图 视图模型 设计模式中 视图
  • 从另一个包导出的函数

    我正在按照以下说明进行操作https golang org doc code html Workspaces https golang org doc code html Workspaces链接 我构建了我的第一个 Go 程序 所以 我尝
  • 通过号码确定信用卡类型?

    是否可以仅根据信用卡号来确定信用卡类型 这是推荐的还是我们应该始终询问客户他们使用的信用卡类型 我用谷歌搜索了一下 发现了这个算法 http cuinl tripod com Tips o 1 htm http cuinl tripod c
  • jquery datepicker 多个实例

    我制作了一个 RequestForQuote 表格 在其中我可以添加新职位以获取 RFQ 基本上 在我的例子中 通过 PHP 可以很容易地完成这一点 工作真的很好 您可能想看一下 可以在以下位置找到 我的网站 http www thermo
  • Angular 和 google 距离矩阵没有访问控制标头

    我越来越 XMLHttpRequest 无法加载 请求中不存在 Access Control Allow Origin 标头 资源 在我的角度应用程序中 我向 google 距离矩阵发出了 http 请求 如下所示 var url http
  • 如何不断提示输入直到有效?

    我试图做到这一点 以便当给定的答案既不是 1 也不是 2 时 显示消息 请输入有效答案 出现了 又回到了问题 这是我的代码 Coloration ConsoleColor DarkMagenta What do you want to do
  • 迭代对象属性

    var obj name Simon age 20 clothing style simple hipster false for var propt in obj console log propt obj propt 变量如何propt