我知道你should avoid it,因此雖然煩人,我總是保護自己免受它。什麼原因變量在使用「for in」時顯示?
但是究竟是什麼原因導致原型的擴展在使用「for in」時出現?有時候(或似乎是)可以安全地使用「for in」,而其他時間則不可以。
即:
我談論例如:
Array.prototype.last = function(){ return this[this.length-1]; }
顯示爲:
for(var k in someArray){
console.log("%o %o", k, someArray[k]); // eventually outputs "last 'function(){ return this[this.length-1]; }'
}
你有一個流浪'''那裏,我不知道它應該去哪裏... – Neal
是什麼原因導致它?沒有真正的......它發生,因爲[規範sa ys so](http://es5.github.com/#x12.6.4)(「枚舉對象的屬性包括枚舉其原型的屬性...」) –
你是什麼意思,你「保護」自己反對它?你的意思是'hasOwnProperty'?如果是這樣,那仍然是迭代數組的錯誤方法。只要你正確地循環,在你自己的代碼中擴展'Array.prototype'沒什麼問題。 –