#### This ```javascript= var x = 10; const Andy = { x: 20, foo: function () { console.log(this.x); }, bar: () => console.log(this.x), far: function () { (() => console.log(this.x))(); } }; const Mary = { x: 30 }; Andy.foo(); // 20 Andy.bar(); //10 Andy.far(); //20 Andy.foo.call(Mary); //30 Andy.bar.call(Mary); //10 Andy.far.call(Mary); //30 const Ken = Andy.far; Ken(); //10 ``` :::info 1. foo 一般函式宣告, this 應指向呼叫函式的物件, 20行 **(Andy 呼叫)**, 26行 **(綁定 Mary 呼叫)** 這兩行程式碼的值 分別為 [20,30] 2. bar arrow function 的 this 應指向定義時作用域指向的物件, bar 定義時作用域物件始終是 window 因此, 22行, 28行 這兩行程式碼的值分別為 [10,10] 3. far 應該與第1點一樣, 因此, 24行 **(Andy 呼叫指向 Andy)**, 30行 **(綁定 Mary 呼叫)**, 35行 **(無綁定其它物件因此指向 window)** 這三行程式碼的值 分別為 [20,30,10] :::