此对象未传递给object方法

时间:2018-03-14 10:43:35

标签: javascript

我有一个JavaScript代码段,如下所示:

var obj = {
  message: "Hello",
  innerMessage: !(function() {
    console.log(this.message);
  })()
};

console.log(obj.innerMessage);

输出:undefined true

为评估innerMessage属性而执行的函数将打印调用该方法的对象的message属性。该属性的值为Hello。但是打印的内容是undefined。看起来该对象没有传递给该方法。为什么会这样?

2 个答案:

答案 0 :(得分:0)

  

输出:undefined true

undefined归因于IIFE中的console.log声明

(function() {
        console.log(this.message);
    })() //prints undefined and returns `undefined`

true是因为innerMessageboolean,因为你否定了!undefined ==> true

答案 1 :(得分:0)

    var obj = {
      message: "Hello",
      innerMessage: !(function() {
      })()
    };
    obj.innerMessage = function(){
     alert(this.message);
    }

obj.innerMessage();

如果要获取消息,可以在创建需要进行功能解除的对象后使用this.message。