Javascript (此)在函数声明之后
有人能解释一下以下代码末尾的Javascript (此)在函数声明之后,javascript,function,variables,scope,declaration,Javascript,Function,Variables,Scope,Declaration,有人能解释一下以下代码末尾的(this)是什么意思吗 var a=(function(_this){ return function() { //do something return smth; }; })(this); 这种编码的意义是什么 接下来,当将下面的代码放在.js文件中并由html标记调用时,它会做什么 (function() { Emitter=(function(){ function Emitter() {} ... return Emitter
(this)
是什么意思吗
var a=(function(_this){
return function() {
//do something
return smth;
};
})(this);
这种编码的意义是什么
接下来,当将下面的代码放在.js文件中并由html标记调用时,它会做什么
(function() {
Emitter=(function(){
function Emitter() {}
...
return Emitter;
})();
A=(function(_super){...})(Emitter);
}).call(this);
如何从js文件外部实例化对象 整个结构是保存
This
的当前值的一种方法,以便以后的函数调用可以使用它
这一切也可以用这样的方法来完成(如果您了解.bind()
的作用,那么可能更容易理解):
以下是您所展示的代码中发生的各种步骤:
最初执行此代码时,此
将具有来自周围上下文的值(您不显示该值)。它作为一个参数被传递到一个自执行函数中,这个参数通常被称为IIFE(立即调用的函数表达式),它只是一个函数调用,在代码最初运行时立即内联发生
在该函数中,它的参数名为\u this
当该函数执行时,它返回另一个函数。该内部函数的主体也可以访问此
当返回该内部函数时,它被分配给变量a
所有这一切的结果是,人们可以调用a()
,该函数的内部结构在执行时将能够访问\u this
,其中包含原始this
的值
因此,它本质上是一种创建函数的方法,该函数在执行时可以访问this
的原始值,即使以后调用a()
时上下文会发生变化。因此,它本质上是将this
的值保存为一个特定的函数,以便以后使用
更详细的信息需要更多的上下文来说明内部函数中发生了什么,这个值在原始上下文中是什么,以及以后如何使用a()
这是生命的一个特殊用途。它们还有许多其他用途。这是一个自执行函数,用于通过函数的闭包保存对“This”的引用。它用于在函数第一次执行时保留对“this”的引用
您还可以使用Function.prototype.bind()实现保存对“this”的引用的类似结果:
搜索“立即调用的函数表达式”。有很多关于它的问题和文章。这是许多事情的常见模式,但您可能会在插件和库中看到它,它是一个自调用函数。我想,当你需要携带一个对象的引用时,你会像那样关闭自调用函数。这些答案中有一个回答了你的问题吗?如果是,请单击答案左侧的绿色复选标记,选择一个作为“最佳答案”。
function myFunc(_this) {
// do something
}
var a = myFunc.bind(null, this);