成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript 之 面向?qū)ο?[ this關(guān)鍵字 ]

Cristalven / 1143人閱讀

摘要:關(guān)鍵字描述一般被定義在函數(shù)中使用都會(huì)指向一個(gè)對(duì)象通過調(diào)用函數(shù)的位置來判斷當(dāng)前指定的對(duì)象默認(rèn)綁定表示在函數(shù)中使用,在調(diào)用該函數(shù)時(shí),沒有具體的指向目標(biāo),會(huì)默認(rèn)為指向全局對(duì)象示例代碼定義一個(gè)全局變量定義一個(gè)函數(shù)在函數(shù)調(diào)用時(shí)無法找到具體的對(duì)象,會(huì)指

this關(guān)鍵字 描述

this 一般被定義在函數(shù)中使用

this 都會(huì)指向一個(gè)對(duì)象

this 通過調(diào)用函數(shù)的位置來判斷當(dāng)前指定的對(duì)象

默認(rèn)綁定

表示在函數(shù)中使用this,在調(diào)用該函數(shù)時(shí),this沒有具體的指向目標(biāo),會(huì)默認(rèn)為this指向全局對(duì)象

示例代碼
/* 定義一個(gè)全局變量 */
var unm = 100;
/* 定義一個(gè)函數(shù) */
function fun() {
    console.log( this.unm );
}
/* 在函數(shù)調(diào)用時(shí)this無法找到具體的對(duì)象,會(huì)指向全局對(duì)象 */
fun();// 顯示 undefined(在瀏覽器環(huán)境中會(huì)顯示匹配的全局變量數(shù)值)
隱式綁定

表示一個(gè)函數(shù)被另一對(duì)象所擁有或包含,從形成的上下文關(guān)系,這時(shí)this會(huì)指向該對(duì)象

示例代碼
/* 定義一個(gè)函數(shù) */
function fun() {
    console.log( this.name );
}

/* 定義一個(gè)對(duì)象 */
var obj = {
    name : "唐三",
    /* 該對(duì)象的方法為一個(gè)指定函數(shù) - 形成上下文關(guān)系 */
    fn : fun
}
/* 調(diào)用指定方法 */
obj.fn();// 顯示 唐三
隱式綁定的丟失

將一個(gè)指定對(duì)象中的指定方法賦值給一個(gè)全局變量,在調(diào)用全局變量時(shí),this將從原本指向具體對(duì)象,變成指向全局對(duì)象

示例代碼
/* 定義一個(gè)函數(shù) */
function fun() {
    console.log( this.name );
}

/* 定義一個(gè)對(duì)象 */
var obj = {
    name : "唐三",
    /* 該對(duì)象的方法為一個(gè)指定函數(shù) - 形成上下文關(guān)系 */
    fn : fun
}
/* 調(diào)用指定方法 */
obj.fn();// 顯示 唐三
/* 將指定對(duì)象的方法賦值給一個(gè)變量 */
var s = obj.fn;
/* 調(diào)用變量 */
s();// 顯示 undefined
顯示綁定

用于處理隱式綁定丟失的一種方法

在調(diào)用函數(shù)時(shí)就明確this所指向的對(duì)象

示例代碼
/* 定義一個(gè)函數(shù) */
function fun() {
    console.log( this.name );
}

/* 定義一個(gè)對(duì)象 */
var obj = {
    name : "唐三",
    /* 該對(duì)象的方法為一個(gè)指定函數(shù) - 形成上下文關(guān)系 */
    fn : fun
}
/* 調(diào)用指定方法 */
obj.fn();// 顯示 唐三
/* 將指定對(duì)象的方法賦值給一個(gè)變量 */
var s = obj.fn;
/* 調(diào)用變量并明確指定this所指定的對(duì)象 */
s.apply( obj );// 顯示 唐三
new綁定

通過構(gòu)造函數(shù)所創(chuàng)建的對(duì)象,會(huì)成為該構(gòu)造函數(shù)中的this所指向的對(duì)象

示例代碼
/* 定義一個(gè)構(gòu)造函數(shù) */
function Fun() {
    /* this會(huì)指向該構(gòu)造函數(shù)所創(chuàng)建的對(duì)象 */
    this.name = "唐三";
}

/* 創(chuàng)建對(duì)象 */
var obj = new Fun();
console.log( obj.name );// 顯示 唐三
被忽略的this

在使用apply()方法或call()方法來調(diào)用函數(shù)時(shí),將null或undefined做為this綁定的對(duì)象傳入時(shí),會(huì)被忽略,并將this的綁定方式變成默認(rèn)綁定

示例代碼
/* 定義函數(shù) */
function fun(){
    console.log( this.s );
}
/* 定義全局變量 */
var s = 100;
/* 使用call()方法來調(diào)用指定函數(shù) */
fun.call( null );// 顯示 undefined (在瀏覽器環(huán)境中會(huì)顯示 100 全局變量)
間接引用

表示將this從隱式綁定或顯示綁定(有明確的指向?qū)ο螅┳兂赡J(rèn)綁定(指向全局對(duì)象)

示例代碼
/* 定義一個(gè)函數(shù) */
function fun() {
    console.log( this.s );
}
/* 定義一個(gè)全局變量 */
var s = 10;
/* 定義一個(gè)對(duì)象 */
var obj = {
    s : 20,
    fn : fun
};
/* 調(diào)用方法 */
obj.fn();// 顯示 20

/* 定義另一個(gè)對(duì)象 */
var x = {
    s : 30
};
/* 將obj對(duì)象中的方法新增到新對(duì)象中并調(diào)用 */
( x.fu = obj.fn )();// 顯示 undefined(瀏覽器環(huán)境中會(huì)顯示 10 全局變量)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96940.html

相關(guān)文章

  • JavaScript面向對(duì)象錯(cuò)誤與異常與this關(guān)鍵字

    摘要:一錯(cuò)誤與異常概述錯(cuò)誤,指程序中的非正常運(yùn)行狀態(tài),在其它語言中稱為異?;蝈e(cuò)誤將每個(gè)錯(cuò)誤中創(chuàng)建個(gè)對(duì)象,描述包含的錯(cuò)誤信息通過使用提供異常的處理語句,可以用結(jié)構(gòu)化方式捕捉發(fā)生錯(cuò)誤,異常處理代碼與核心代碼實(shí)現(xiàn)分離語句語句是指中處理異常一種標(biāo)準(zhǔn)方式, JS(JavaScript)一.錯(cuò)誤與異常1.概述錯(cuò)誤,指程序中的非正常運(yùn)行狀態(tài),在其它語言中稱為異?;蝈e(cuò)誤將每個(gè)錯(cuò)誤中創(chuàng)建個(gè)Error對(duì)象,描述...

    ASCH 評(píng)論0 收藏0
  • 面向對(duì)象JavaScript

    摘要:是完全的面向?qū)ο笳Z言,它們通過類的形式組織函數(shù)和變量,使之不能脫離對(duì)象存在。而在基于原型的面向?qū)ο蠓绞街?,?duì)象則是依靠構(gòu)造器利用原型構(gòu)造出來的。 JavaScript 函數(shù)式腳本語言特性以及其看似隨意的編寫風(fēng)格,導(dǎo)致長(zhǎng)期以來人們對(duì)這一門語言的誤解,即認(rèn)為 JavaScript 不是一門面向?qū)ο蟮恼Z言,或者只是部分具備一些面向?qū)ο蟮奶卣?。本文將回歸面向?qū)ο蟊疽猓瑥膶?duì)語言感悟的角度闡述為什...

    novo 評(píng)論0 收藏0
  • 溫故知新javascript面向對(duì)象

    摘要:應(yīng)該非常小心,避免出現(xiàn)不使用命令直接調(diào)用構(gòu)造函數(shù)的情況。上面代碼表示,使用屬性,確定實(shí)例對(duì)象的構(gòu)造函數(shù)是,而不是。當(dāng)然,從繼承鏈來看,只有一個(gè)父類,但是由于在的實(shí)例上,同時(shí)執(zhí)行和的構(gòu)造函數(shù),所以它同時(shí)繼承了這兩個(gè)類的方法。 基本概念 類和實(shí)例是大多數(shù)面向?qū)ο缶幊陶Z言的基本概念 類:類是對(duì)象的類型模板 實(shí)例:實(shí)例是根據(jù)類創(chuàng)建的對(duì)象但是,JavaScript語言的對(duì)象體系,不是基于類的,...

    趙連江 評(píng)論0 收藏0
  • JS面向對(duì)象二:this/原型鏈/new原理

    摘要:情況沒有明確作用對(duì)象的情況下,通常為全局對(duì)象例如函數(shù)的回調(diào)函數(shù),它的就是全局對(duì)象。正因如此,機(jī)器可以作為這類對(duì)象的標(biāo)志,即面向?qū)ο笳Z言中類的概念。所以機(jī)器又被稱為構(gòu)造函數(shù)。原型鏈也就是繼承鏈。 JS面向?qū)ο蠖?this/原型鏈/new原理 阮一峰JavaScript教程:面向?qū)ο缶幊?阮一峰JavaScript教程:實(shí)例對(duì)象與 new 命令 阮一峰JavaScript教程:this 關(guān)...

    anRui 評(píng)論0 收藏0
  • javascript面向對(duì)象總結(jié)

    摘要:之面向?qū)ο罂偨Y(jié)前言在中是沒有類的概念的,所以它的對(duì)象與基于類的語言中的對(duì)象不同。一理解對(duì)象張三上面通過構(gòu)造函數(shù)創(chuàng)建了一個(gè)對(duì)象,并為它添加了三個(gè)屬性。 JavaScript之面向?qū)ο罂偨Y(jié) 前言:在ECMAScript中是沒有類的概念的,所以它的對(duì)象與基于類的語言中的對(duì)象不同。ECMA-262把對(duì)象總結(jié)為:無序?qū)傩缘募希鋵傩园局?、?duì)象或者函數(shù)。 一、理解對(duì)象 var person...

    taowen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<