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

溫馨提示×

溫馨提示×

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

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

JavaScript中this指向的示例分析

發布時間:2022-03-04 11:43:10 來源:億速云 閱讀:140 作者:小新 欄目:開發技術

小編給大家分享一下JavaScript中this指向的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

this

先看代碼:

方法中

function test(){
    console.log(this);
}

JavaScript中this指向的示例分析

對象中

Person={
  name:"張三",
  eat:function(){
      console.log(this)
  }
}

JavaScript中this指向的示例分析

在方法中,this表示該方法所屬的對象。因為第一個是window上的方法,所以打印了window,而eat方法是Person方法,所以打印除了對象Person。

所以可以看出單獨在控制臺使用this, 表示全局對象。

JavaScript中this指向的示例分析

隱藏的this

在對象,可以提前聲明一個一個:

var Person1={
    name:"張三",
    age:18
}
var Person2={
    name:"李四",
    age:19
}

這樣寫會很麻煩,所以可以借鑒一下java類的概念,可以這樣:

var Person=function(name,age){
    this.name=name,
    this.age=age
       
}
var Person1=new Person("張三",18);
var Person2=new Person("李四",19);

JavaScript中this指向的示例分析

其實在new的時候隱藏了一個return this,如果不使用new的話,發現其沒有返回這個新建的對象。

JavaScript中this指向的示例分析

那么現在補全一下看:

var Person=function(name,age){
    this.name=name,
    this.age=age
    return this;
}
var Person1=new Person("張三",18);
var Person2=new Person("李四",19);

JavaScript中this指向的示例分析

這樣的話,甚至可以偽造一個this的效果:

var Person=function(name,age){
    var that={};
    that.name=name,
    that.age=age
    return that;
}
var Person1=new Person("張三",18);
var Person2=new Person("李四",19);

JavaScript中this指向的示例分析

嚴格模式

this在嚴格模式和非嚴格模式下有些神奇的情況

function test() {
  return this;
}

# 如果js前面添加"use strict" 代表是嚴格模式
"use strict";
function test() {
  return this;
}

JavaScript中this指向的示例分析

這個可以看出在非嚴格模式下函數中,函數的所屬者默認綁定到 this 上。所以可以打印出全局,但是嚴格模式下函數是沒有綁定到 this 上,這時候 this 是 undefined。

可以改變this指向

先看代碼

var Person=function(name,age){
    this.name=name,
    this.age=age,
    this.fun=function(){
         console.log("打印",this.name);
        }
}
var Person1=new Person("張三",18);
var Person2=new Person("李四",19);

JavaScript中this指向的示例分析

可以看出this指向的window中的a的值而不是方法test中的值,但是有些關鍵字是可以修改指向的。

JavaScript中this指向的示例分析

可以看出方法前的對象是誰,調用的this就是誰,但是可以修改的比如使用關鍵字 call ,apply ,bind

JavaScript中this指向的示例分析

JavaScript中this指向的示例分析

JavaScript中this指向的示例分析

看上面的話,可以看出call和apply兩個很像,而bind不會立即執行函數,需要帶()執行。

不過如果帶上參數的話,會發現call和apply還是不同的,但是其里面都必須是對象才行,畢竟this這個指向就是對象

關鍵字直接調用方法參數
call會自動運行使用的方法都可以帶參數格式如下:obj1.obj1Fun.call( obj2, 參數1, 參數1 ………………);
apply會自動運行使用的方法都可以帶參數格式如下:obj1.obj1Fun.apply( [ obj2, 參數1, 參數1 ………………]); 對比call的參數其參數用 [ ] 包住
bind不會自動運行使用的方法,需要后面+(),進行調用都可以帶參數格式如下:都可以帶參數格式如下:obj1.obj1Fun.bind( [ obj2, 參數1, 參數1 ………………])(); 對比apply的參數是一樣的,只不過其需要后面+()才能調用

以上是“JavaScript中this指向的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

吐鲁番市| 平乡县| 商河县| 甘泉县| 来宾市| 阿拉善右旗| 囊谦县| 密山市| 施甸县| 土默特左旗| 定西市| 托克托县| 吉木乃县| 四子王旗| 安仁县| 莫力| 永清县| 庆元县| 垦利县| 延津县| 咸丰县| 华蓥市| 田林县| 南溪县| 金阳县| 永康市| 东辽县| 阳高县| 灵台县| 通海县| 宁国市| 尚义县| 个旧市| 逊克县| 冕宁县| 三江| 宁德市| 措美县| 克东县| 松潘县| 恭城|