【发布时间】:2018-12-30 13:03:14
【问题描述】:
我有这个功能
const obj = {
key1: 0.1,
key2: (function(){return this.key1 +' units'})(),
key3: function(){return this.key1 +' units'},
}
ob其实是{ key1: 0.1, key2: 'undefined units', Function }
并且 obj.key3() 按预期给出0.1 units
【问题讨论】:
-
因为
this不是obj -
this是指代码中封闭函数的上下文,而不是obj。 -
obj.key3()将在对象创建后运行该函数,它作为方法调用运行,分配this。obj.key2将运行声明了obj但尚未分配的函数,并且 IIFE 未分配this。 -
有道理,如何从IIFE访问全局
obj? -
你不能因为如果你尝试你会得到
ReferenceError: can't access lexical declaration 'obj' before initialization
标签: javascript object this iife