var f = function() {
this.m = '10' ;
f1 = function(){
alert(m)
}
}
o = new f()
o.m
f1()
これは、上記の例からネストされた関数 f1 を呼び出す正しい方法ですか?
var f = function() {
this.m = '10' ;
f1 = function(){
alert(m)
}
}
o = new f()
o.m
f1()
これは、上記の例からネストされた関数 f1 を呼び出す正しい方法ですか?
f1
のメソッドになりたいと想定していますf
。その場合は、プロパティとして追加する必要があります( で行ったようにm
):
var f = function() {
this.m = '10';
this.f1 = function(){
alert(this.m); //Notice that this has changed to `this.m`
};
}; //Function expressions should be terminated with a semicolon
次に、のインスタンスでメソッドを呼び出すことができますf
。
o = new f();
o.f1(); //Alerts '10'
これが実際の例です。
現在の方法ではf1
、グローバルスコープに漏れることになります(var
ステートメントなしで宣言されているため)。
補足: 通常は、メソッドを のプロパティにすることをお勧めしますprototype
。これにより、各インスタンスのコピーではなく、メモリ内の関数の単一のコピーが作成されます。
var f = function() {
this.m = '10';
};
f.prototype.f1 = function() {
alert(this.m);
};
コードでは、関数は内部関数であり、外部から呼び出すことはできません。コンストラクター内で呼び出す場合は、オブジェクトに f1 を割り当てる必要があります。
this.f1 = function() {
alert(m);
}
次に、次のように呼び出すことができます。
o = new f()
o.f1() //=> alerts 10