js中的this的調用(學習阮一峰老師)

JavaScript中this對象

? 在js的函數(shù)中經(jīng)常看到如下語句,不明白有什么作用。

function? person(name){

??????? this.name=name;

}

this對象是誰取決于函數(shù)被調用的方式,在JavaScript中,函數(shù)具有四種調用方式:

一、直接調用,此時函數(shù)中的this在ES3/ES5非嚴格模式下為全局對象,在瀏覽器中即為window

var x=1;

function test(){

??????? alert(this.x); 此時this為window

}

test(); //結果為1

二、某個對象的方法調用,這時this指這個上級對象

function test(){

? ? ? ? alert(this.x); //此時this指o

}

var o={};

o.x=1;

o.m=test;

o.m(); //輸出為1

三、作為構造函數(shù)調用

? 所謂構造函數(shù),實際上就是通過這個函數(shù)生成一個新的對象,此時this就是指這個新對象

function test(){

? ?? this.x=1;? //this為o

}
var o=new test();
alert(o.x); //輸出為1

? 為了表明this不是全局對象,對代碼做如下調整:

var x=2;

function test(){

?????? this.x=1;

}

var o = new test();

alert(x); //結果為2,表面全局變量的x根本沒有變

四、apply調用

? apply()是函數(shù)對象的一個方法,它的作用是改變函數(shù)的調用對象,它的第一個參數(shù)就表示改變后的調用這個函數(shù)的對象,因此this指的就是這個第一個參數(shù)

var x=0;

function test(){

?????? alert(this.x);

}

var o = {};

o.x = 1;

o.m = test;

o.m.apply(); //結果為0

?? apply()參數(shù)為空時,默認調用全局對象,所以這時的運行結果為0,此時,this為全局對象,如果最后一行改為

o.m.apply(o);? //結果為1

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 第一章: JS簡介 從當初簡單的語言,變成了現(xiàn)在能夠處理復雜計算和交互,擁有閉包、匿名函數(shù), 甚至元編程等...
    LaBaby_閱讀 1,761評論 0 6
  • 工廠模式類似于現(xiàn)實生活中的工廠可以產生大量相似的商品,去做同樣的事情,實現(xiàn)同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 8,130評論 2 17
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,679評論 0 4
  • 單例模式 適用場景:可能會在場景中使用到對象,但只有一個實例,加載時并不主動創(chuàng)建,需要時才創(chuàng)建 最常見的單例模式,...
    Obeing閱讀 2,315評論 1 10
  • 第一部分 準入訓練 第1章 進入忍者世界 js開發(fā)人員通常使用js庫來實現(xiàn)通用和可重用的功能。這些庫需要簡單易用,...
    如201608閱讀 1,408評論 1 2

友情鏈接更多精彩內容