2

Javascriptでオブジェクトを継承する次の2つの方法に違いはありますか?

function Person(name) {
    this.name = name;
}
function Student(name, id) {
    Person.call(this, name);
    this.id = id;
}

方法1:

Student.prototype.__proto__ = Person.prototype;

方法2:

Student.prototype = new Person;
Student.prototype.constructor = Student;
4

1 に答える 1

1

指定されたパターンによるオブジェクトの作成に加えて、コンストラクター関数は別の便利なことを行います。それは、新しく作成されたオブジェクトのプロトタイプオブジェクトを自動的に設定します。このプロトタイプオブジェクトはConstructorFunction.prototypeプロパティに保存されます。

.__proto__これは、ほとんど「内部」のプロパティを特定のオブジェクトに設定することで明示的に行うことができます。とにかく、それはすべてのjavascript実装で可能というわけではありません。しかし、基本的にはほとんど同じです。プロトタイプがオブジェクトに対して特別に設定されていない場合は、デフォルトのオブジェクトが使用されます(Object.prototype)。

于 2011-10-16T02:26:00.320 に答える