我有一个对象,它简化得有点像:
function obj(arg){
return{
fct1: function(){
$(".output").append("called fct1 with arg: "+arg+"<br>");
},
fct2: function(){
$(".output").append("called fct2, which has an other function, which calls fct1<br>");
fct2a();
function fct2a(){
$(".output").append("doing something else, then calling fct1<br>");
this.fct1(); //not within scope
}
}
}
}
var myobj = obj("asd");
myobj.fct2();我想从fct2a打电话给fct2a,怎么打?小提琴
发布于 2015-09-06 16:00:01
创建一个临时变量并将this对象标记为该变量并从该变量调用。请找到下面的代码
function obj(arg){
return{
var temp=this;
fct1: function(){
$(".output").append("called fct1 with arg: "+arg+"<br>");
},
fct2: function(){
$(".output").append("called fct2, which has an other function, which calls fct1<br>");
fct2a();
function fct2a(){
$(".output").append("doing something else, then calling fct1<br>");
temp.fct1();
}
}
}
}
var myobj = obj("asd");
myobj.fct2();发布于 2015-09-06 16:07:52
您还可以分别声明fct1()并在需要时调用它:
function obj(arg){
function innerFct1(arg) {
$(".output").append("called fct1 with arg: "+arg+"<br>");
}
return{
fct1: innerFct1,
fct2: function(){
$(".output").append("called fct2, which has an other function, which calls fct1<br>");
fct2a();
function fct2a(){
$(".output").append("doing something else, then calling fct1<br>");
innerFct1("arg2"); //not within scope
}
}
}
}
var myobj = obj("asd");
myobj.fct2();https://stackoverflow.com/questions/32425429
复制相似问题