其實js的this指向很簡單。我們記住下麵3種情況。 當我們執行fn()的時候,這個普通函數中的this指向到底是什麼?答案就是指向的是瀏覽器中的window.(這裡說明,這裡實在瀏覽器下,如果是node環境不是)。 fn類(這裡使用了構造函數new方式生成,這個時候函數fn可以看做是一個類),生成 ...
其實js的this指向很簡單。我們記住下麵3種情況。
- this 指向的是瀏覽器中的window.代碼如下:
function fn(){ this.name='yangkun'; this.age=28; }
當我們執行fn()的時候,這個普通函數中的this指向到底是什麼?答案就是指向的是瀏覽器中的window.(這裡說明,這裡實在瀏覽器下,如果是node環境不是)。
- 如果這個時候我們對上面的函數進行進一步操作:
function fn(){ this.name='yangkun'; this.age=28; } var f=new fn;
console.log(f.name); //yangkun //這個時候貌似this指向的是實例中的name值。fn類(這裡使用了構造函數new方式生成,這個時候函數fn可以看做是一個類),生成了一個實例f ,其中f的name,就是類分配給實例f的私有屬性值,這個時候this指向的就是f實例。
- 使用call,apply,bind:這些方法可以直接修改this的指向到任意的對象甚至變數。
綜上所描述:1規律:如果在點語法前有誰,這個this就是誰。2 如果使用call,apply,bind這些方法可以改變this的指向性。