我使用对象文字表示法定义了一个模块,如下所示:
var myModule = {
myProperty: "someValue",
myConfig: {
useCaching: true,
language: "en"
},
saySomething: function () {
console.log( "XXX" );
},
functionA: function () {
// do something
),
functionB: function () {
// need call functionA
myModule.functionB(); // style 1
this.functionB(); // style 2
)
};
使用关键字this的目的是什么?样式1和&之间的区别是什么? 2。
我还注意到有些人使用var that = this
,然后是func()
,这怎么会更好?我应该把var that = this
放在我的模块中。
对象文字符号的最佳做法是什么?
答案 0 :(得分:0)
首先,this
的值取决于您所称的方法。当您执行myModule.func()
时,this
内的func
将为myModule
。当你做更复杂的事情时:
function delegator(func) {
func();
}
delegator(myModule.functionB);
...,您会注意到this
中的func
将不再引用myModule
,而是将成为全局对象(或undefined
如果您&# 39;重新使用严格模式)。
这就是人们将that
设为this
的原因。在您的场景中,您无法放置该别名,因为您正在定义一个对象。
当您知道将始终在您的模块上调用该方法时,使用this
是安全的,否则您应该使用myModule.functionB()
方法。