JavaScriptでプロトタイプとコンストラクタがどのように動作しているかを理解しようとしています。オブジェクトはどのように作成されますか?
- によって空のオブジェクトはコンストラクタ関数
- のオブジェクトが関数のプロトタイプにリンクされている
- オブジェクト検索を
- を作成している
私は常にオブジェクトをJavaScriptで作成されましたかピクチャでありますこのコンストラクタ関数が実行され、そのオブジェクトにプロパティが割り当てられた
- 暗黙的にオブジェクトが返される
return this
この方法は、obj2
とobj3
を説明できないようです。
たとえば、Foo.prototype.constructor
をobj2
の別のものに明示的に設定しますが、obj2
のプロパティはまだbar
です。さんはbar
を言ってみましょうobj2
プロパティbar
を持っていると、なぜobj3
がObject
によって作成された理由を説明するのFooのプロトタイプ、に保存されているが、私はカップルより多くを作成した場合obj2
S、彼らはのFooのプロトタイプで同じ変数bar
を共有する意味であろうとされており、私はそうではないと思う。
誰かがobj2
とobj3
がこのような理由についてもっと合理的な説明をすることはできますか?
function Foo(){
this.bar = true;
}
console.log('obj1');
var obj1 = new Foo();
console.log(obj1);
console.log(obj1.constructor === Foo);
console.log('obj2');
Foo.prototype.constructor = 3; //a dummy value
var obj2 = new Foo();
console.log(obj2);
console.log(obj2.constructor === Foo);
function Bar(){
this.foo = true;
}
console.log('obj3');
Bar.prototype = 3;
var obj3 = new Bar();
console.log(obj3);
console.log(obj3.constructor === Bar);
console.log(obj3.constructor === Object);
http://stackoverflow.com/questions/572897/how-does-javascript-prototype-workオブジェクトは、本質的な特性を含む変数(コンテキストまたはそれ以外)されているJavaScriptの – Abhitalks
- これらのプロパティメソッドでも、値でもかまいません。プロトタイプ(Object.prototype.prototype)は、これらのプロパティを変更します。 – Crowes
@Abhitalksもしあなたが私の言ったことを読んだら、私はあなたのリンクが何を話しているかをすでに理解していることを知っているでしょう。 2番目の箇条書きのポイント私はすでにリンケージ '__proto__'を話しています。私は' __proto__'または '[[Prototype]]'を明示的に記述していません。 – kevguy