Javascript 的 function
今天在練習 js 的時候,一直卡在該用 this 還是 var。主要是 this 在 context 情境不同時,所指向的對象是不同的。然而這個情況在 普通 function 和箭頭函式的狀況下又有不一樣的變化。
- arrow function 內會綁定當前 this, normal function 不會。
- 可以利用 var 定義一個參數綁定當前的位置,進行呼叫。
- var、this 所定義出來的變數是不同的。
- this.variable 可以直接被外部存取、var variable 則需另外定義 getter 才行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| function timer() { var self = this; var intervalId; this.intervalId = 666;
this.normalLogFun = function () { console.log(this, self);
clearInterval(intervalId); self.isSame(); }; this.arrowLogFun = () => { console.log(this, self);
clearInterval(intervalId); this.isSame(); }; this.start = function () { intervalId = setInterval(this.normalLogFun, 1000); }; this.start2 = () => { intervalId = setInterval(this.arrowLogFun, 1000); this.isSame(); }; this.isSame = function () { console.log(intervalId); console.log(this.intervalId); console.log(window.intervalId); console.assert(intervalId == this.intervalId, "It's different!!"); }; }
|