中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

js中this原理的示例分析

發布時間:2021-08-20 11:06:12 來源:億速云 閱讀:107 作者:小新 欄目:web開發

這篇文章主要介紹了js中this原理的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

首先我們來概括下this.

this是一個對象,一般存在于函數中,表示當前函數的執行上下文;

值得一提的是,當函數在執行后,this才有綁定的對象,函數未執行時,this沒有內容

接下來我們看看在不同場景下的this的指向

1.函數默認執行 :此時this指向Window

 function fn(){
  console.log(this)    //Window
 };
fn();

在嚴格模式開啟后,this的指向又有所不同

嚴格模式下 : this指向undefined

 function fn(){
  "use strict"
  console.log(this)    //undefined
 };
 fn();

2.函數的隱式執行 : this指向函數的直接執行對象

function fn(){
    console.log(this);    
   };
   var a = 10;
   var obj = {
    a:20,
    b:fn
   };
   obj.b();        //this指向obj
  var obj2 = {
    a:30,
    b:obj.b
   };
   obj2.b();       //this指向obj2
  var obj3 = {
    a:40,
   b:obj2        
  };
  obj3.b.b();      //obj3.b.b等價于obj2.b this指向obj2

但當函數作為參數傳到另一個函數的變量時, 發生隱式丟失,this指向Window

function fn(){
   console.log(this)  //Window
  };
  var obj = {
   a:20,
   b:fn
  };
 setTimeout(obj.b, 1000);
  function setTimeout(cb,t){
   cb();        //obj.b作為參數傳給cb,而cb前沒對象,相當于默認方式執行fn() 
  };

3.函數的顯式執行 : this指向指定對象

我們可以通過函數的bind、call、apply方式指定this的對象,還可以用來修復上文中的隱式丟失

var obj = {
  name: "obj",
  show: function () {
   console.log(this.name)
  }
 }
 obj.show();      //obj

 var obj2 = {
  name: "obj2"
 };
 obj.show.bind(obj2)();   //obj2

 var name = "蠟筆笑嘻嘻";   
 obj.show.bind(window)();  //Window

4.構造函數執行(通過new執行)

構造函數中的this 會指向創建出來的實例對象

 function Person() {
  this.name = 'zhar';
 }
 var p = new Person();
 console.log(p.name);  //zhar

感謝你能夠認真閱讀完這篇文章,希望小編分享的“js中this原理的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

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

AI

镇平县| 镶黄旗| 固阳县| 尤溪县| 深圳市| 永胜县| 封开县| 上高县| 丰台区| 防城港市| 磐石市| 高雄市| 汉源县| 金门县| 得荣县| 即墨市| 金秀| 五常市| 枝江市| 丹巴县| 乐东| 台东县| 福清市| 丰顺县| 遵义市| 万全县| 山西省| 九龙城区| 武山县| 梨树县| 札达县| 堆龙德庆县| 工布江达县| 琼结县| 河南省| 安泽县| 玛纳斯县| 辰溪县| 朝阳市| 惠东县| 吴桥县|