我有一个本地化到主函数的函数,我想使用 this
来调用它,但它似乎不起作用。
我的代码有:
function option(room,slot){
var div_id = document.getElementById(room);
var opacity = window.getComputedStyle(div_id).opacity
transition_opacity(div_id,opacity,0,function(){this.load});
function load(){
console.log('test'); //does not happen
}
}
我是不是误解了 this
的用法,或者当我使用 function(){}
调用 load
时范围丢失了?
最佳答案
从您的代码来看,this
可以引用什么对象并不明显。这取决于 option
的调用方式。但是,如果您在 option
函数中定义了 load
函数,最好直接引用它。不过,您必须将 test
的声明移至 transition_opacity
调用之上:
function option(room,slot){
var div_id = document.getElementById(room);
var opacity = window.getComputedStyle(div_id).opacity;
function load() {
console.log('test');
}
transition_opacity(div_id,opacity,0,load);
}
如您所见,我只是直接引用load
。您可以创建另一个调用 load
函数的函数(即 function() { load(); }
– 注意括号 calls 函数)但这不会给你带来任何好处,只会向堆栈添加另一个不需要的函数。所以只引用实际功能本身。
有关 this
关键字的更多信息,请查看 this question .剧透:它比你想象的要复杂。
关于javascript - 试图通过函数传递 `this`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19437681/