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

首頁 > 語言 > JavaScript > 正文

javascript中的this作用域詳解

2024-05-06 15:36:57
字體:
供稿:網(wǎng)友

Javascript中this的指向一直是困擾我很久的問題,在使用中出錯的機率也非常大。在面向?qū)ο笳Z言中,它代表了當(dāng)前對象的一個引用,而在js中卻經(jīng)常讓我覺得混亂,它不是固定不變的,而是隨著它的執(zhí)行環(huán)境的改變而改變。

在Javascript中this總是指向調(diào)用它所在方法的對象。因為this是在函數(shù)運行時,自動生成的一個內(nèi)部對象,只能在函數(shù)內(nèi)部使用。

下面我們分幾種情況深入分析this的用法:

1.全局的函數(shù)調(diào)用

  function globalTest() {    this.name = "global this";    console.log(this.name);  }  globalTest(); //global this

以上代碼中,globalTest()是全局性的方法,屬于全局性調(diào)用,因此this就代表全局對象window。為了充分證明this是window,對代碼做如下更改:

  var name = "global this";  function globalTest() {    console.log(this.name);  }  globalTest(); //global this

name作為一個全局變量,運行結(jié)果仍然是“global this”,說明this指向的是window。在方法體中我們嘗試更改全局name,再次調(diào)用方法輸出“rename global this”, 說明全局的name在方法內(nèi)部被更改。代碼如下:

  var name = "global this";  function globalTest() {    this.name = "rename global this"    console.log(this.name);  }  globalTest(); //rename global this

根據(jù)以上三段代碼,我們得出結(jié)論:對于全局的方法調(diào)用,this指向的是全局對象window,即調(diào)用方法所在的對象。

2.對象方法的調(diào)用

如果函數(shù)作為對象的方法調(diào)用,this指向的是這個上級對象,即調(diào)用方法的對象。 在以下代碼中,this指向的是obj對象。

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

3.構(gòu)造函數(shù)的調(diào)用

構(gòu)造函數(shù)中的this指向新創(chuàng)建的對象本身。

  function showName() {    this.name = "showName function";  }  var obj = new showName();  console.log(obj.name); //showName function

上述代碼中,我們通過new關(guān)鍵字創(chuàng)建一個對象的實例,new關(guān)鍵字可以改變this的指向,將這個this指向?qū)ο髈bj。
我們再增加一個全局的name,用以證明this指向的不是global:

  var name = "global name";  function showName() {    this.name = "showName function";  }  var obj = new showName();  console.log(obj.name); //showName function  console.log(name); //global name

在構(gòu)造函數(shù)的內(nèi)部,我們對this.name進行賦值,但并沒有改變?nèi)肿兞縩ame。

4.apply/call調(diào)用時的this

apply和call都是為了改變函數(shù)體內(nèi)部的this指向。 其具體的定義如下:

call方法:

語法:call(thisObj,Object)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 安图县| 得荣县| 临猗县| 古交市| 谷城县| 北碚区| 卢湾区| 梧州市| 富蕴县| 阜宁县| 天长市| 石狮市| 五华县| 绥江县| 寿光市| 嵊泗县| 乌拉特后旗| 琼结县| 汨罗市| 英超| 利川市| 满洲里市| 桦甸市| 宁远县| 巫溪县| 五华县| 渝北区| 中江县| 晋城| 汝城县| 黄冈市| 佛冈县| 瑞金市| 内黄县| 民权县| 灵寿县| 石台县| 肥城市| 长宁县| 哈尔滨市| 株洲市|