オブジェクトが空であるかどうかテストしたい:{}
。以下は、一般的に使用されます。Object.prototypeが変更された場合、オブジェクト "isEmpty()"が存在するかどうかをテストする方法?
function isEmpty(obj) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop))
return false;
}
return true;
}
しかし、次のようにObject
プロトタイプが追加されたとします、
alert(isEmpty({})); // true
Object.prototype.Foo = "bar";
alert({}.Foo); // "bar" oh no...
alert(isEmpty({})); // true ...**huh?!**
私は、オブジェクトのプロトタイプをハァハァしようとしたのです、それを変更します。
Object.prototype.Foo = "bar";
テストをコンストラクタ、そのようなハッキングのすべての方法。何も働かなかったが、おそらく私はそれを間違っていた(おそらく)。
実際、私はこの質問が間違ったフレーズであることに気付きました。おそらくそうでなければなりません。_「プロトタイプチェーンが変更されたかどうかをテストする方法」_ –
...私が考えることができる唯一の方法は、 "Object"、 "Number"、 "Array"などのすべてのプロパティをハードコードし、既知のプロパティの外側に何もないことを確認することです。かなり厄介です。私は単体テストでこれをやりたいと思っていますが、私はいつも疑問に思っていたプリミティブ型に何かを忍ばせないようにしています(私のコードを下流に吹き飛ばす可能性があり、問題を追跡するのに苦労するでしょう) 。 –
これを読んでください:http://www.3site.eu/doc/ – diEcho