(this) 在函数声明之后
(this) after function declaration
谁能解释一下下面代码末尾的 (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文件外部实例化对象A?
整个结构是一种保存this
当前值的方法,以便稍后的函数调用可以使用它。
这一切也可以像这样用 .bind()
完成(如果你理解 .bind()
的作用可能更容易理解):
function myFunc(_this) {
// do something
}
var a = myFunc.bind(null, this);
以下是您显示的代码中发生的各个步骤:
this
最初执行此代码时(您未显示)将具有来自周围上下文的值。它被作为参数传递给一个自执行函数,通常称为 IIFE(立即调用的函数表达式),它只是一个函数调用,立即内联发生,因为代码最初是 运行。
在该函数中,它的参数名称为 _this
。
当该函数执行时,它 returns 另一个函数。该内部函数的主体也可以访问 _this
.
当返回那个内部函数时,它被赋值给变量a
。
所有这一切的结果是可以调用 a()
和该函数的内部结构,当它执行时将能够访问 _this
,其中包含原始 [=11] 的值=].
因此,它本质上是一种创建函数的方法,该函数在执行时将可以访问 this
的原始值,即使稍后调用 a()
时上下文会发生变化。因此,它基本上保存了 this
的值供以后使用的特定函数使用。
更多细节将需要更多关于内部函数内部发生的事情的上下文,this
值在原始上下文中是什么以及以后如何使用 a()
。
这是 IIFE 的一个特殊用途。它们还有许多其他用途。
这是一个自执行函数,用于通过函数的闭包保存对"this"的引用。它用于在函数第一次执行时保留对 "this" 的引用。
您还可以使用 Function.prototype.bind() 来实现类似的结果,即保存对 "this" 的引用:
MDN - Bind
谁能解释一下下面代码末尾的 (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文件外部实例化对象A?
整个结构是一种保存this
当前值的方法,以便稍后的函数调用可以使用它。
这一切也可以像这样用 .bind()
完成(如果你理解 .bind()
的作用可能更容易理解):
function myFunc(_this) {
// do something
}
var a = myFunc.bind(null, this);
以下是您显示的代码中发生的各个步骤:
this
最初执行此代码时(您未显示)将具有来自周围上下文的值。它被作为参数传递给一个自执行函数,通常称为 IIFE(立即调用的函数表达式),它只是一个函数调用,立即内联发生,因为代码最初是 运行。
在该函数中,它的参数名称为 _this
。
当该函数执行时,它 returns 另一个函数。该内部函数的主体也可以访问 _this
.
当返回那个内部函数时,它被赋值给变量a
。
所有这一切的结果是可以调用 a()
和该函数的内部结构,当它执行时将能够访问 _this
,其中包含原始 [=11] 的值=].
因此,它本质上是一种创建函数的方法,该函数在执行时将可以访问 this
的原始值,即使稍后调用 a()
时上下文会发生变化。因此,它基本上保存了 this
的值供以后使用的特定函数使用。
更多细节将需要更多关于内部函数内部发生的事情的上下文,this
值在原始上下文中是什么以及以后如何使用 a()
。
这是 IIFE 的一个特殊用途。它们还有许多其他用途。
这是一个自执行函数,用于通过函数的闭包保存对"this"的引用。它用于在函数第一次执行时保留对 "this" 的引用。
您还可以使用 Function.prototype.bind() 来实现类似的结果,即保存对 "this" 的引用: MDN - Bind