これは、John Resigs Learning Advanced JavaScriptからの例です。注意:プロトタイプを拡張することは危険です.http://ejohn.org/apps/learn/#81 As書かれています(長さ== 3)。アサートは失敗しますが、obj.keys().length == 4
がアサートされていれば成功します。JavaScript拡張プロトタイプ#81 John Resigからの高度なJavaScriptの学習
ここ
1)なぜ彼は「我々は唯一の3つの特性を有するべきである」と言っているいくつかの質問がありますか?どのような方法でそれは予期しなかったか、または4つのプロパティを持つことには残念ですか?
2)どのように4つのプロパティを取得しますか?
3)プログラムの3行目にはvar i
とは何ですか。
4)3行目のthis
は、オブジェクトを参照していますか?
5)アサルトを見ると、このコードobj.keys().length
は最初の行で関数を呼び出しますか?
6)obj.keys()。lengthに4つのプロパティがある場合、返された配列のvarキーに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;