问一个 ES6 作用域的问题
資深大佬 : jingcoco 27
var value = 1; var foo = { value: 2, bar: function () { return this.value; } } //示例 1 console.log(foo.bar()); //示例 2 console.log((foo.bar)());
为什么这两个结果一样.老感觉第二个结果是 value=1 这个
大佬有話說 (35)
var value = 1; var foo = { value: 2, bar: function () { return this.value; } } //示例 1 console.log(foo.bar()); //示例 2 console.log((foo.bar)());
为什么这两个结果一样.老感觉第二个结果是 value=1 这个
ff()
可能是因为 foo.bar 与(foo.bar)是同一个 reference,而 x 是复制的 reference
“`
这样结果就是 1 了…..
(foo.bar = foo.bar)()
相当于
var bar = (foo.bar = foo.bar)
bar()
也就相当于
var bar = foo.bar
bar()
this 指向 window
(foo.bar = foo.bar)() -> 10
之后,再
foo.bar() -> 20