在 JavaScript 中,当使用作为回调的内部函数(例如 AJAX 调用)时,它们在自己的环境中运行(this
是窗口对象),并且不知道this
它们是在哪里编写的。我已经看到了两种解决方案:
- 使用
self
orthat
: (通过自动装箱self
变量完成)
var Obj = function(){
var a = 1;
var subFunc = function(){
var self = this;
$.ajax({
url: 'something.x',
success: function(data){alert(self);}
});
}
return {
subtract : subFunc
}
};
var o = new Obj();
o.substract();
- 使用
bind
命令:(我不确定这是如何完成的)
var Obj = function(){
var a = 1;
var subFunc = function(){
$.ajax({
url: 'something.x',
success: function(data){alert(this);}.bind(this)
});
}
return {
subtract : subFunc
}
};
var o = new Obj();
o.substract();
口译员实际开始口译时有什么区别?这对性能有什么影响?