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

JS匿名函數(shù)內(nèi)部this指向問題詳析

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

前言

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

this的指向在函數(shù)定義的時(shí)候是確定不了的,只有函數(shù)執(zhí)行的時(shí)候才能確定this到底指向誰,實(shí)際上this的最終指向的是那個(gè)調(diào)用它的對(duì)象

1.案例中,第一個(gè)say打出來的是Alan,而第二個(gè)則是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. 函數(shù)內(nèi)部的this指向調(diào)用者
  2. sayOne調(diào)用者是person對(duì)象,所以this指向person;
  3. sayTwo的調(diào)用者雖然也是person對(duì)象,但是區(qū)別在于這次調(diào)用并沒有打出this而是在全局返回了一個(gè)匿名函數(shù)
  4. 而這個(gè)匿名函數(shù)不是作為某個(gè)對(duì)象的方法來調(diào)用執(zhí)行,是在全局執(zhí)行

3.我們也可以更改this指向,這里應(yīng)用JS高級(jí)編程的案例

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

漠河县| 高州市| 杭锦后旗| 普陀区| 翼城县| 江孜县| 罗平县| 墨脱县| 内乡县| 巴彦淖尔市| 集贤县| 丘北县| 綦江县| 曲周县| 福鼎市| 普兰店市| 旺苍县| 沙坪坝区| 汶上县| 黄石市| 津南区| 筠连县| 新蔡县| 崇州市| 阜宁县| 鸡西市| 措勤县| 长葛市| 平阴县| 盘锦市| 图片| 南陵县| 灌云县| 黄骅市| 讷河市| 精河县| 察雅县| 五华县| 柳河县| 防城港市| 永福县|