我在下面有以下代码,但是有一个问题。 我想从调用匿名函数的名为the_id的函数clslevel()内部访问一个变量。我尝试过this.the_id,但返回的结果未定义。
function clslevel(id){
var the_id = id;
this.methodOne=function(param){
param();
return this;
};
this.methodTwo=function(param){
param();
return this;
};
}
function level(id){
return new clslevel(id);
}
level("myButton")
.methodOne(
function(){
console.log("methodOne called.");
// how can I access the variable 'the_id' in clslevel() from here?
}
)
.methodTwo(
function(){
console.log("methodTwo called");
}
)
提前谢谢!
答案 0 :(得分:2)
将其作为参数传递给函数,如下所示:
function clslevel(id){
var the_id = id;
this.methodOne=function(param){
param(the_id);
return this;
};
this.methodTwo=function(param){
param();
return this;
};
}
function level(id){
return new clslevel(id);
}
level("myButton")
.methodOne(
function(the_id){
console.log("methodOne called.", the_id);
// You have the_id here
}
)
.methodTwo(
function(){
console.log("methodTwo called");
}
)
答案 1 :(得分:2)
您可以将此变量传递给回调:
function clslevel(id){
var the_id = id;
this.methodOne=function(param){
param(the_id);
return this;
};
this.methodTwo=function(param){
param();
return this;
};
}
function level(id){
return new clslevel(id);
}
level("myButton")
.methodOne(
function(passed_id){
console.log("methodOne called.");
console.log(passed_id)
// how can I access the variable 'the_id' in clslevel() from here?
}
)
.methodTwo(
function(){
console.log("methodTwo called");
}
)
答案 2 :(得分:1)
您可以传递对象的引用,以便可以在其他作用域内使用父函数
function clslevel(id){
this.the_id = id;
this.methodOne=function(param){
param(this);
return this;
};
this.methodTwo=function(param){
param(this);
return this;
};
}
function level(id){
return new clslevel(id);
}
level("myButton")
.methodOne(
function(parent){
console.log("methodOne called.");
console.log('the_id = ' + parent.the_id)
// how can I access the variable 'the_id' in clslevel() from here?
}
)
.methodTwo(
function(){
console.log("methodTwo called");
}
)