在使用对象文字表示法定义的模块中使用关键字this的最佳实践
Best practice for the keyword this in a module defined using object literal notation?
我定义了一个使用对象文字表示法的模块,如下所示:
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和样式1的区别是什么?2.我也注意到有些人用var that = this
,然后那个。func()
,这个怎么更好?我应该把var that = this
放在哪里,在我的模块。
对象文字表示法的最佳实践是什么?
首先,this
的值取决于您调用的方法。当您执行myModule.func()
时,func
中的this
将是myModule
。当你做更复杂的事情时,比如:
function delegator(func) {
func();
}
delegator(myModule.functionB);
…,你会注意到func
中的this
将不再引用myModule
,而是全局对象(或者undefined
,如果你使用严格模式)。
这就是人们将that
别名为this
的原因。在您的场景中,没有地方可以放置别名,因为您正在定义一个对象。
当您知道该方法将始终在模块上被调用时,使用this
是安全的,否则您应该使用myModule.functionB()
方法。
相关文章:
- JavaScript 中的嵌套函数和 “this” 关键字
- Javascript 对象和 this 关键字
- 将“this”关键字发送到对象中
- 如何使用“this”关键字来调用a
- 使用关键字“this”有什么好处
- 组合类和事件监听器:`this`关键字
- 将this关键字与selectedIndex一起使用的优势
- javascript中的关键字THIS作为全局命名空间
- 在forEach中调用类函数:Javascript如何处理“this”关键字
- 使用“this”关键字响应类行为
- Javascript 'this' 关键字 在嵌套函数中
- Javascript 关键字 THIS 和 ELEMENT
- 使用 RhinoScriptEngine,我如何更改 javascript 关键字“this”所指的内容
- 当用作函数参数/agrument时,关键字this指的是什么
- Javascript函数和对象使用关键字'this'不工作
- 为什么关键字“this”在HTML和JS中不起作用
- 如何在javascript中使用关键字this
- 在 lambda 中使用关键字 this 与带有 Typescript 的函数时会发生什么
- 在使用对象文字表示法定义的模块中使用关键字this的最佳实践
- 关键字this没有给我当前对象,只有它的父对象.如何得到当前对象