0

プロトタイプのインスタンスを設定するのに苦労しています。私はこのようなものを持っています:

function Course() {
    // Some stuff
}

Course.prototype.MyMethod = function() {
    // Do stuff
}

を作成するNew Course()と、すべて正常に動作しますが、 からコースを取得していJSONます。だから私がやりたかったのは:

data.forEach(function(courseFromJSON) {
    courseFromJSON.prototype = Course.prototype;
    courseFromJSON.prototype = new Course(); // Doesn't work either
});

しかし、私のコースではメソッドMyMethodが設定されていません。どちらも に設定courseFromJSON.prototypeされていませんnew Course()。Douglas Crockford のビデオを見てきましたが、うまくいきません。私は何を間違っていますか?

ありがとう。

4

1 に答える 1

1

prototype既に作成されたオブジェクトのプロトタイプを変更できないか、少なくともプロパティを介して変更できないため、コードが機能していませんでした。

2 つの選択肢があります。

  1. internal__proto__プロパティを使用しますが、これは非標準のプロパティであるためお勧めできません。

  2. 関数を使用しsetPrototypeOf(Object, prototype)ます。これは推奨されており、ES6 で標準化されます。

または、次のドキュメント リンクから取得したコード スニペットを使用することをお勧めしますsetPrototypeOf()

Object.setPrototypeOf = Object.setPrototypeOf || function (obj, proto) {
    obj.__proto__ = proto;
    return obj; 
}
于 2013-10-14T09:25:55.073 に答える