我想測試一個對象是否爲空:{}
。下面是通常用於:如何在Object.prototype被修改的情況下測試對象「isEmpty()」?
function isEmpty(obj) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop))
return false;
}
return true;
}
但假設Object
原型加入如下:
Object.prototype.Foo = "bar";
測試:
alert(isEmpty({})); // true
Object.prototype.Foo = "bar";
alert({}.Foo); // "bar" oh no...
alert(isEmpty({})); // true ...**huh?!**
我試圖核武器攻擊對象的原型,改變它的構造函數,以及所有這些黑客行爲。沒有任何工作,但也許我做錯了(可能)。
其實我剛剛意識到這個問題可能是錯誤的措詞,它應該是:_「如何測試一個原型鏈是否改變了_」? – 2012-01-03 05:25:00
...我唯一能想到的方式就是硬編碼「對象」,「數字」,「數組」等所有屬性,並檢查已知屬性之外沒有任何內容。相當混亂。雖然我想在單元測試中做到這一點,但看到沒有人將某些東西塞進原始類型中,這一直是我一直懷疑的(因爲它可能會炸燬我的代碼,並且很難追查這個問題) 。 – 2012-01-03 05:33:28
閱讀此:http://www.3site.eu/doc/ – diEcho 2012-01-03 06:02:05