我发现自己处于一个有趣的境地。我正在使用对象文字来表示现实世界中的产品。现在,每个产品都有一个与其关联的长度以用于运输目的。它看起来像这样:
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
。为什么?好吧,因为内部下划线使用长度属性,所以 Javascript 中的每个对象都必须遍历传入对象的所有属性。由于我们覆盖了那个值,它现在是-1
,并且由于我们从 开始循环i = 0
,循环将永远不会被执行。
现在的问题是,如何防止长度属性被覆盖?防止这种情况发生的最佳实践也将受到赞赏。