我有一个JavaScript代码段,如下所示:
var obj = {
message: "Hello",
innerMessage: !(function() {
console.log(this.message);
})()
};
console.log(obj.innerMessage);
输出:undefined true
为评估innerMessage
属性而执行的函数将打印调用该方法的对象的message
属性。该属性的值为Hello
。但是打印的内容是undefined
。看起来该对象没有传递给该方法。为什么会这样?
答案 0 :(得分:0)
输出:undefined true
undefined
归因于IIFE中的console.log
声明
(function() {
console.log(this.message);
})() //prints undefined and returns `undefined`
而true
是因为innerMessage
是boolean
,因为你否定了!undefined
==> true
。
答案 1 :(得分:0)
var obj = {
message: "Hello",
innerMessage: !(function() {
})()
};
obj.innerMessage = function(){
alert(this.message);
}
obj.innerMessage();
如果要获取消息,可以在创建需要进行功能解除的对象后使用this.message。