來自John Resigs的示例#81高級JavaScript,名爲「當心:擴展原型可以危險」.http://ejohn.org/apps/learn/#81 As它被寫入(長度== 3),斷言失敗,但是如果你斷言obj.keys().length == 4
它通過。JavaScript擴展原型#81來自John Resig學習高級JavaScript
這裏有一些問題
1)爲什麼他說:「我們應該只有3個屬性」?有4個物業出乎意料或令人失望?
2)它如何獲得4個屬性?
3)什麼是var i
在程序的第三行?
4)第三行中的this
是否指對象?
5)看看斷言,這個代碼obj.keys().length
在第一行調用函數嗎?如果在obj.keys()。length中有4個屬性,返回的數組var key中是否還有4個元素?
Object.prototype.keys = function(){
var keys = [];
for (var i in this)
keys.push(i);
return keys;
};
var obj = { a: 1, b: 2, c: 3 };
assert(obj.keys().length == 3, "We should only have 3 properties.");
delete Object.prototype.keys;