0

コンストラクターで変数が割り当てられた Javascript 内に「クラス」があります。また、プロトタイプを使用して変数/メソッドを保存します。

var MyClass = function() 
{ 
    this.age = 100;
};

MyClass.prototype.name = "John";
MyClass.prototype.getAge = function() { return this.age};

alert(MyClass.prototype.name); //Alerts John
alert(MyClass.age); //undefined as expected
alert(MyClass.prototype.getAge()); //undefined??

したがって、クラスからオブジェクトを作成しない限り、MyClass 内に格納されているコンストラクター変数にアクセスする方法はありません。

var theClass = new MyClass();
alert(theClass.age);
alert(theClass.getAge());​

どちらのアラートも年齢を正しく返します。

繰り返しになりますが、変数を作成せずに MyClass から直接コンストラクター変数にアクセスできますか?

4

2 に答える 2

2

いいえ。ageあなたの例の変数は、コンストラクター関数の実行時に作成されます。したがって、関数を実行するまで使用できません。

于 2012-05-24T12:58:00.130 に答える
2

したがって、クラスからオブジェクトを作成しない限り、MyClass 内に格納されているコンストラクター変数にアクセスする方法はありません。

正しい。それらは関数本体で割り当てられます。関数が実行されるまで存在しません。

繰り返しになりますが、変数を作成せずに MyClass から直接コンストラクター変数にアクセスできますか?

いいえ。

于 2012-05-24T12:58:09.487 に答える