我有一个与 JavaScript 对象初始化符号有关的问题。我对上面的示例有效,因为它指的是定义中实例的名称,我感到有些惊讶。这两种方法是否相同?我通常使用第二种方法,但它们似乎达到了同样的效果。
var myObj =
{
Message:"Test",
someMethod:function(){
$.get("/someUrl",function(){
myObj.Message = "Returned Value";
})
}
}
var myObj =
{
Message:"Test",
someMethod:function(){
var that = this; //have to capture this in order to use it in a different context.
$.get("/someUrl",function(){
that.Message = "Returned Value";
})
}
}
我想顶级方法有优势,因为您不必跟踪当前含义,this
因为它可能会在不同的上下文中发生变化。还有其他区别吗?
编辑:了解顶级方法并不总是推荐的方法,但我想在某些情况下我仍然看到一些优势。一种这样的情况是 KnockoutJS,其中绑定解析将重新定义this
视图模型上绑定点击处理程序的含义。更多信息:http:
//www.appliness.com/10-things-to-know-about-knockout-js-on-day-one/。
在这种情况下,我将不得不手动记录当前含义this
我通常使用第二种方法,但我只是想完全理解差异以及它为什么起作用:-)。绝对理解它只适用于单实例场景。