javascript - 覆盖对象的长度属性

标签 javascript

我发现自己处于一个有趣的境地。我使用对象文字来表示现实世界中的产品。现在,每个产品都有一个与其关联的长度,用于运输目的。它看起来像这样:

var product = {
  name: 'MacBook Pro 15 Inch',
  description: 'The new macbook pros....',
  length: 15
  height: 15
  Weight: 4
}

这个效果很好。但对于长度未知的产品,它们默认长度为 -1。

这又可以正常工作,直到您尝试这样做:

console.log('Product has the following properties');
_.each(product, function(val, key) {
    console.log(key + ":" + val);
});

对于长度为-1的产品,不会打印任何 key 。为什么?因为下划线内部使用了 length 属性,所以 Javascript 中的每个对象都必须循环传入对象的所有属性。由于我们覆盖了该值,它现在是 -1,并且由于我们在 i = 0 处开始循环,因此循环将永远不会被执行。

现在的问题是,如何防止 length 属性被覆盖?防止这种情况发生的最佳实践也将受到赞赏。

最佳答案

试试这个:

    var product = {
        name: "MacBook Pro 15 Inch",
        description: 'The new macbook pros....',
        length: 15,
        height: 15,
        weight: 4
    };
    console.log('Product has the following properties');
    _.each(_.keys(product), function(key){
        console.log(key + ":" + product[key]);
    });

关于javascript - 覆盖对象的长度属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11423556/

相关文章:

javascript - 在 Electron-Typescript 应用程序中找不到模块 'jsonfile/utils'

javascript - 如何优化 getYoutubeViews 函数以免超出每日 Youtube API 配额?

javascript - 在混合 android 应用程序中导航时在 chrome 设备中看到多个分离的 webview 实例

javascript - 在我的案例中如何在指令中分配数据

javascript - 如何在不依赖于页面中使用的结构/样式的情况下将元素呈现在页面上所有其他元素之上?

javascript - JS 全局变量导致评估崩溃

javascript - 当鼠标移到绝对定位的侄子文本上时,悬停效果在图像上丢失

javascript - 了解 setInterval 中剩余的时间并将其应用于计时器的暂停和恢复

javascript - 调用没有元素的 javascript 函数

javascript - 在网站上炫耀一个巨大的文本文件