91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS匿名函數內部this指向問題詳析

發布時間:2020-09-26 06:46:11 來源:腳本之家 閱讀:223 作者:ipromise 欄目:web開發

前言

網上看到一句話,匿名函數的執行是具有全局性的,那怎么具有的全局性呢?

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.原因

  1. 函數內部的this指向調用者
  2. sayOne調用者是person對象,所以this指向person;
  3. sayTwo的調用者雖然也是person對象,但是區別在于這次調用并沒有打出this而是在全局返回了一個匿名函數
  4. 而這個匿名函數不是作為某個對象的方法來調用執行,是在全局執行

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白水县| 江源县| 衢州市| 封开县| 乳山市| 沈阳市| 巴里| 互助| 梅河口市| 嘉荫县| 林周县| 宁阳县| 昌都县| 岢岚县| 黄冈市| 洛南县| 盘锦市| 光泽县| 双峰县| 江北区| 保德县| 石景山区| 徐汇区| 平原县| 奉新县| 扶沟县| 襄樊市| 肥西县| 额济纳旗| 建德市| 漠河县| 八宿县| 沈丘县| 循化| 龙门县| 翁牛特旗| 清水河县| 天峻县| 明光市| 安多县| 凤城市|