私は興味深い状況に陥った。オブジェクト リテラルを使用して、実世界の製品を表現しています。現在、各製品には、配送目的で関連付けられた長さが設定されています。次のようになります。
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
いるため、ループは実行されません。
質問ですが、長さプロパティがオーバーライドされないようにするにはどうすればよいですか? これが起こらないようにするためのベストプラクティスも高く評価されます。