0

メソッドを宣言するためにどこでプロトタイプを使用すればよいか混乱していますか? 私が読んだのは、プロトタイプで宣言されたメソッドを作成した場合、すべてのインスタンスが同じ参照を使用しているので、静的か何か違うものですか? プロトタイプ メソッドでインスタンス プロパティに到達できるためですか。しかし、C#では、静的メソッドでクラス変数(静的ではない)に到達できませんか?

例:

function Calculator()
{
     if(this === window){
          return new Calculator();
     }

     this.Bar = "Instance Variable";
}

Calculator.prototype.SaySomething = function(thing){
     return thing + " " + Bar;
}


Calculator().SaySomething("Test"); // Test Instance Variable
4

3 に答える 3

2

prototypenewのキーワードと連動しています。次の例を見てください。

function Calculator(bar) {
     this.Bar = bar;
}

Calculator.prototype.SaySomething = function(thing){
     return thing + " " + this.Bar;
}

var calInstance = new Calendar("Instance Variable");
calInstance.SaySomething("Test");
于 2012-08-20T00:21:31.950 に答える
1

プロトタイプ化されたメソッドを正しく宣言していますが、間違って呼び出しています。Calculatorは静的オブジェクトではなく単なるクラスであるため、オブジェクトのインスタンスを作成した場合にのみメソッドを呼び出すことができます。

var calc = new Calculator();
calc.SaySomething('thing');
//this would return "thing Instance Variable"

つまり、Javascript はクラス メソッドやインスタンス メソッドを使用せず、インスタンス メソッドのみを使用します。

于 2012-08-20T00:22:29.737 に答える
1

Douglas Crockfordの JS The Good Partsを読むことをお勧めします。JS のプロトタイプ オブジェクト モデルをよりよく理解できるようになります。

于 2012-08-20T00:22:30.443 に答える