1

プロトタイプの使用に関して利用できる資料がたくさんあることは知っていますが、さまざまな提案された方法があるようで、私は自分のものを見つけようとしています。私は本当に以下の構造についてのフィードバックを探しています。何か問題があれば。前もって感謝します。

function Class(){}

Class.prototype = {
    MethodOne: function() {

    },
    MethodTwo: function() {

    },
    MethodThree: function() {

   }
}
4

2 に答える 2

2

全体的に完璧!これが私のクラスの作成方法でもあります。ここにいくつかのマイナーな編集が​​あります:

function Class() {
   return this;
}

Class.prototype = {
    methodOne: function() {

    },
    methodTwo: function() {

    },
    methodThree: function() {

   }
}

1) メソッド名を小文字で開始するように変更しました。コンベンションのためだけに。
2) コンストラクターがこれを返すようにしました (新しく作成されたオブジェクト)。
3) クラスを作成したら、次のように使用できます。

 var obj = new Class();  
 obj.methodOne();  
于 2012-12-14T19:21:11.300 に答える
2

あなたの例は本当に単純で、構文は正しいです。しかし、私の考えをあなたと共有したいと思います。

まず、Classコンストラクターのプロトタイプ オブジェクトを完全に置き換えます。それは問題ありませんが、 で作成されたオブジェクトからコンストラクターへの参照を失いますClass。あなたのコードを使用して:

var a = new Class();
a.constructor; // => function Object() { [native code] }

プロパティが実際のコンストラクターであるため、constructor指している方がよいのではないでしょうか? これを修正するには、 prototypeにプロパティをClass追加する必要があります。のように: 。constructorClassClass.prototype.constructor = Class

第二に、私は通常、小文字から始まるオブジェクト メソッドを目にします。これは慣例ですが、すべてのネイティブ オブジェクトのメソッドはこのように定義されています。たとえば、デフォルトDateオブジェクト ( Date.prototype.*) で定義されているメソッドを見てください。それらはすべて小文字で始まります。

于 2012-12-14T19:21:36.620 に答える