1. 程式人生 > >JavaScript中this關鍵字原理

JavaScript中this關鍵字原理

先來看一個例子:

var obj = {
  foo: function () { console.log(this.bar) },
  bar: 1
};

var foo = obj.foo;
var bar = 2;

obj.foo() // 1
foo() // 2

造成這種差異的原因就是函式體內部使用了this關鍵字,需要明確的是程式碼中this指的是函式執行時所在的環境

為啥會是這樣呢?下面將詳細剖析。

JS會將函式單獨儲存在記憶體中,JavaScript 還允許在函式體內部,引用當前環境的其他變數。

因此,上面程式碼函式f在全域性環境執行,this.x指向全域性環境的x。在obj環境執行,this.x指向obj.x。