分配时,此上下文会发生变化

时间:2013-01-29 18:49:37

标签: javascript

此问题来自ECMA-262测验

var x = 100;
var foo = {
  x: 50,
  bar: function(){
    return this.x;
  }
}
console.log(foo.bar()); //returns 50
console.log((foo.bar = foo.bar)()); //returns 100

第二个this语句中console上下文如何变化?或者一般来说,哪个对象等于(赋值)操作会返回全局对象?

2 个答案:

答案 0 :(得分:3)

foo.bar(一个member operator)评估对象上的Reference属性”栏“,当{ {3}}

(foo.bar = foo.bar)(一个calling it)只生成指定的值,调用它将导致全局对象被用作assignment

答案 1 :(得分:2)

foo.bar = foo.bar返回函数foo.bar,然后通过(...)()调用该函数。由于该函数未作为对象foo的属性调用,因此其this将不是foo对象,而是在本例中为全局对象。