var num = 10;
var obj = {
num:8,
inner: {
num: 6,
print: function () {
console.log(this.num);
}
}
}
num = 888;
obj.inner.print();
var fn = obj.inner.print;
fn();
(obj.inner.print)();
(obj.inner.print = obj.inner.print)();
我来回答以下最后一个写法:
(obj.inner.print = obj.inner.print)();
首选我们需要注意下运算符优先级
由于圆括号的优先级大于函数执行,因此圆括号先执行(obj.inner.print = obj.inner.print),其返回值为函数print本身(print), 然后作为函数被执行(print()),其this指向window