最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年05月10日 11:15:04   作者:ipromise  
這篇文章主要給大家介紹了關于JS匿名函數內部this指向的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JS具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

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

this的指向在函數定義的時候是確定不了的,只有函數執(zhí)行的時候才能確定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對象,但是區(qū)別在于這次調用并沒有打出this而是在全局返回了一個匿名函數
  4. 而這個匿名函數不是作為某個對象的方法來調用執(zhí)行,是在全局執(zhí)行

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

總結

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

相關文章

最新評論

岢岚县| 广水市| 临邑县| 那坡县| 页游| 中西区| 额济纳旗| 横峰县| 宣城市| 安丘市| 东平县| 辉县市| 新河县| 竹北市| 自治县| 牡丹江市| 保亭| 会同县| 永善县| 黄大仙区| 伊春市| 白城市| 远安县| 安西县| 英山县| 巴里| 广宁县| 西平县| 锦屏县| 吉木萨尔县| 东兰县| 扶绥县| 铁力市| 前郭尔| 临高县| 阿拉善盟| 甘肃省| 响水县| 通辽市| 泸定县| 绥芬河市|