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