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