次のステートメントでObject#hasOwnProperty()
は、 を使用して、現在のプロパティがオブジェクトのインスタンスのプロパティであり、プロトタイプ チェーンからのものではないかどうかを確認します。これは、この条件を気にしないことを意味します。for
ループは、プロトタイプ チェーンに含まれるプロパティのリスト全体を通過します。
for (key in obj)
if (obj.hasOwnProperty(key)) {
iterator.call(context, obj[key], key);
}
}
この動作を取り除き、オブジェクトのインスタンスのプロパティのリストのみを調べる方法があるかどうか知りたいですか?
タグで述べたように、私は主にパフォーマンスに関する質問をしています。1 つの回答が使用を提案しているため、この精度を上げていますObject#getOwnPropertyNames()
が、私が見たすべてのベンチマークは、for…in
with とhasOwnProperty
vsgetOwnPropertyNames
がかなり不利であることを証明しているようですgetOwnPropertyNames
。例: jsperf.com/for-in-vs-object-getownpropertynamesまたはjsperf.com/for-in-vs-gettownpropertynames-and-foreach/5