我發現自己處於一個有趣的狀態。我正在使用對象字面值來表示真實世界中的產品。現在每個產品都有一個與其相關的長度以用於運輸目的。它看起來像這樣:重寫對象的長度屬性
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
長度的產品。爲什麼?那麼因爲內部下劃線使用length屬性,所以Javascript中的每個對象都必須遍歷傳入對象的所有屬性。由於我們重寫了該值,因此現在爲-1
,並且自從我們開始循環i = 0
以來,循環將永遠不會執行。
現在對於這個問題,我該如何防止長度屬性被覆蓋?最好的做法,以防止這種情況發生也將不勝感激。
我想在這裏指出你的對象可以覆蓋hasOwnProperty屬性的'陷阱',所以使用'Object.prototype.hasOwnProperty',這是你想要的功能。 – Halcyon 2012-07-10 23:50:41
不錯但有效的邊緣:) – Evert 2012-07-10 23:52:20
我知道的權利。這就是爲什麼我們不能擁有美好的事物! – Halcyon 2012-07-10 23:53:26