国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

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

2024-05-06 16:50:42
字體:
來源:轉載
供稿:網友

前言

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

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(); //foofoo.getName.call(bar); //barfoo.getName.call(this); //globalfoo.getName.call(window); //global(function(){ console.log(this.name)}.bind(bar))(); //bar(function(){ console.log(this.name)}.bind())(); //global

總結

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


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 固原市| 石棉县| 阳春市| 徐闻县| 洱源县| 天气| 枣庄市| 安岳县| 柏乡县| 定远县| 锦州市| 吐鲁番市| 宁晋县| 连平县| 抚松县| 山丹县| 宁远县| 大邑县| 阳江市| 三门县| 新密市| 什邡市| 大城县| 民权县| 定西市| 乌拉特中旗| 永定县| 新昌县| 兰州市| 安丘市| 邳州市| 天祝| 旅游| 梁河县| 休宁县| 察雅县| 昂仁县| 庄河市| 辽阳县| 陵水| 黔南|