为什么不能在这种情况下使用IIFE生成对象值?

时间:2018-07-23 06:23:13

标签: javascript object this iife

我有这个功能

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

1 个答案:

答案 0 :(得分:0)

初始化obj时会调用IIFE。 key1obj内部。这样您会得到一个未定义的错误。尽早声明key1

var obj = (function(){
  var key1 = 0.1;
  
  return {
    key1: key1,
    key2: (function(){
      return key1 +' units';
    })(),
    key3: function(){
      return this.key1 +' units'
    }
  };
})();

console.log(obj)