0

我有这个功能

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了预期

4

1 回答 1

0

IIFE 在objget 初始化时被调用。key1在里面obj。所以你得到一个未定义的错误。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)

于 2018-07-23T06:40:30.693 回答