这是我的问题:
var greatapp = {
start : function(){
$.AJAX({
url : 'foo.com',
success : function(data){
greatapp.say(data);
}
})
},
say : function(s){
console.log(s);
}
}
我不喜欢这个例子的事实是我在success
函数中重复自我,通过定义对象的名称而不仅仅是this
这显然不起作用,因为它在外部功能。
如何在JS对象中只使用名称greatapp
一次?
答案 0 :(得分:10)
常见的JavaScript习惯用法是将this
的值保存到me
或self
等变量中,并在回调中使用 。
这将起作用,因为回调可以访问在封闭范围内声明的变量 - 换句话说,回调将形成self
上的闭包
var greatapp = {
start : function(){
var self = this;
$.AJAX({
url : 'foo.com',
success : function(data){
self.say(data);
}
})
},
say : function(s){
console.log(s);
}
}