var f = function() {
this.m = '10' ;
f1 = function(){
alert(m)
}
}
o = new f()
o.m
f1()
Run Code Online (Sandbox Code Playgroud)
这是从上面的例子调用嵌套函数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
Run Code Online (Sandbox Code Playgroud)
然后,您可以在以下实例上调用该方法f:
o = new f();
o.f1(); //Alerts '10'
Run Code Online (Sandbox Code Playgroud)
这是一个有效的例子.
您当前拥有它的方式将导致f1泄漏到全局范围(因为它是在没有声明的情况下var声明的).
旁注:通常更喜欢使你的方法属性prototype.这会在内存中生成函数的单个副本,而不是每个实例的副本:
var f = function() {
this.m = '10';
};
f.prototype.f1 = function() {
alert(this.m);
};
Run Code Online (Sandbox Code Playgroud)