您好,登錄后才能下訂單哦!
前言
網上看到一句話,匿名函數的執行是具有全局性的,那怎么具有的全局性呢?
this的指向在函數定義的時候是確定不了的,只有函數執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個調用它的對象
1.案例中,第一個say打出來的是Alan,而第二個則是window
var name = 'window' var person = { name :'Alan', sayOne:function () { console.log(this.name) }, sayTwo:function () { return function () { console.log(this.name) } } } person.sayOne()//Alan person.sayTwo()() // window
2.原因
3.我們也可以更改this指向,這里應用JS高級編程的案例
var name = "global"; var foo = { name: "foo", getName : function(){ console.log(this.name); } } var bar = { name: "bar", getName : function(){ return (function(){ console.log(this.name); })(); } } foo.getName(); //foo foo.getName.call(bar); //bar foo.getName.call(this); //global foo.getName.call(window); //global (function(){ console.log(this.name) }.bind(bar))(); //bar (function(){ console.log(this.name) }.bind())(); //global
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。