假设我们有函数test()
:
function test(){
a();
this.b = function(){
alert(1);
}
function a(){
this.b();
}
}
var t = new test();
此代码将抛出 TypeError:this.b不是函数
问题是,我们如何才能在b()
内正确访问a()
?
答案 0 :(得分:2)
更改顺序:
function test(){
var me = this;
this.b = function(){
alert(1);
}
a();
function a(){
me.b();
}
}
在分配变量之前,您无法致电this.b()
。并且您需要使用局部变量来捕获闭包中的this
值。
答案 1 :(得分:0)
function test(){
var me = this;
this.b = function () {
console.log(1);
}
function a() {
console.log('calling me.b()');
me.b();
}
a();
}
var t = new test();
console.log('calling t.b()');
t.b();