6

__proto__Object.createメソッドの違いを知りたいです。次の例を見てください。

var ob1 = {a:1};
var ob2 = Object.create(ob1);

ob2.__proto__ === ob1; // TRUE

これは、Object.create メソッドが新しいオブジェクトを作成し、__proto__パラメーターとして受け取ったオブジェクトへのリンクを設定することを意味します。__proto__create メソッドを使用する代わりに、 linkを直接使用しないのはなぜですか?

4

2 に答える 2

3

__proto__非標準であり、どこでもサポートされるわけではありません。 Object.createは公式仕様の一部であり、今後すべての環境でサポートされる必要があります。

また、さまざまな場所でさまざまな方法で実装されています。

有効な Javascriptから:

たとえば、null プロトタイプを持つオブジェクトの処理など、環境は異なります。一部の環境で__proto__は、 は Object.prototype から継承されるため、プロトタイプが null のオブジェクトには特別な __proto__プロパティはありません。

オブジェクトを作成して継承を実装するための受け入れられた方法を前進させるのがObject.create関数です。プロトタイプにアクセスする必要がある場合は、これらの関数を使用することをお勧めします。Object.getPrototypeOf これらの関数は標準化されており、最新のすべての環境で同じように機能するはずです。

于 2013-03-11T13:18:10.050 に答える
3

create メソッドを使用する代わりに、プロト リンクを直接使用しないのはなぜですか?

__proto__非標準のプロパティであるため 、必ずしもすべてのブラウザーで使用できるとは限りません。

ただし、ES.nextについては検討されているようでした。詳細: MDN -__proto__ .

于 2013-03-11T13:17:54.077 に答える