摘要:關(guān)鍵字描述一般被定義在函數(shù)中使用都會(huì)指向一個(gè)對象通過調(diào)用函數(shù)的位置來判斷當(dāng)前指定的對象默認(rèn)綁定表示在函數(shù)中使用,在調(diào)用該函數(shù)時(shí),沒有具體的指向目標(biāo),會(huì)默認(rèn)為指向全局對象示例代碼定義一個(gè)全局變量定義一個(gè)函數(shù)在函數(shù)調(diào)用時(shí)無法找到具體的對象,會(huì)指
this關(guān)鍵字 描述
this 一般被定義在函數(shù)中使用
this 都會(huì)指向一個(gè)對象
this 通過調(diào)用函數(shù)的位置來判斷當(dāng)前指定的對象
默認(rèn)綁定表示在函數(shù)中使用this,在調(diào)用該函數(shù)時(shí),this沒有具體的指向目標(biāo),會(huì)默認(rèn)為this指向全局對象
示例代碼/* 定義一個(gè)全局變量 */ var unm = 100; /* 定義一個(gè)函數(shù) */ function fun() { console.log( this.unm ); } /* 在函數(shù)調(diào)用時(shí)this無法找到具體的對象,會(huì)指向全局對象 */ fun();// 顯示 undefined(在瀏覽器環(huán)境中會(huì)顯示匹配的全局變量數(shù)值)隱式綁定
表示一個(gè)函數(shù)被另一對象所擁有或包含,從形成的上下文關(guān)系,這時(shí)this會(huì)指向該對象
示例代碼/* 定義一個(gè)函數(shù) */ function fun() { console.log( this.name ); } /* 定義一個(gè)對象 */ var obj = { name : "唐三", /* 該對象的方法為一個(gè)指定函數(shù) - 形成上下文關(guān)系 */ fn : fun } /* 調(diào)用指定方法 */ obj.fn();// 顯示 唐三隱式綁定的丟失
將一個(gè)指定對象中的指定方法賦值給一個(gè)全局變量,在調(diào)用全局變量時(shí),this將從原本指向具體對象,變成指向全局對象
示例代碼/* 定義一個(gè)函數(shù) */ function fun() { console.log( this.name ); } /* 定義一個(gè)對象 */ var obj = { name : "唐三", /* 該對象的方法為一個(gè)指定函數(shù) - 形成上下文關(guān)系 */ fn : fun } /* 調(diào)用指定方法 */ obj.fn();// 顯示 唐三 /* 將指定對象的方法賦值給一個(gè)變量 */ var s = obj.fn; /* 調(diào)用變量 */ s();// 顯示 undefined顯示綁定
用于處理隱式綁定丟失的一種方法
在調(diào)用函數(shù)時(shí)就明確this所指向的對象
示例代碼/* 定義一個(gè)函數(shù) */ function fun() { console.log( this.name ); } /* 定義一個(gè)對象 */ var obj = { name : "唐三", /* 該對象的方法為一個(gè)指定函數(shù) - 形成上下文關(guān)系 */ fn : fun } /* 調(diào)用指定方法 */ obj.fn();// 顯示 唐三 /* 將指定對象的方法賦值給一個(gè)變量 */ var s = obj.fn; /* 調(diào)用變量并明確指定this所指定的對象 */ s.apply( obj );// 顯示 唐三new綁定
通過構(gòu)造函數(shù)所創(chuàng)建的對象,會(huì)成為該構(gòu)造函數(shù)中的this所指向的對象
示例代碼/* 定義一個(gè)構(gòu)造函數(shù) */ function Fun() { /* this會(huì)指向該構(gòu)造函數(shù)所創(chuàng)建的對象 */ this.name = "唐三"; } /* 創(chuàng)建對象 */ var obj = new Fun(); console.log( obj.name );// 顯示 唐三被忽略的this
在使用apply()方法或call()方法來調(diào)用函數(shù)時(shí),將null或undefined做為this綁定的對象傳入時(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)綁定(指向全局對象)
示例代碼/* 定義一個(gè)函數(shù) */ function fun() { console.log( this.s ); } /* 定義一個(gè)全局變量 */ var s = 10; /* 定義一個(gè)對象 */ var obj = { s : 20, fn : fun }; /* 調(diào)用方法 */ obj.fn();// 顯示 20 /* 定義另一個(gè)對象 */ var x = { s : 30 }; /* 將obj對象中的方法新增到新對象中并調(diào)用 */ ( x.fu = obj.fn )();// 顯示 undefined(瀏覽器環(huán)境中會(huì)顯示 10 全局變量)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/96940.html
摘要:一錯(cuò)誤與異常概述錯(cuò)誤,指程序中的非正常運(yùn)行狀態(tài),在其它語言中稱為異常或錯(cuò)誤將每個(gè)錯(cuò)誤中創(chuàng)建個(gè)對象,描述包含的錯(cuò)誤信息通過使用提供異常的處理語句,可以用結(jié)構(gòu)化方式捕捉發(fā)生錯(cuò)誤,異常處理代碼與核心代碼實(shí)現(xiàn)分離語句語句是指中處理異常一種標(biāo)準(zhǔn)方式, JS(JavaScript)一.錯(cuò)誤與異常1.概述錯(cuò)誤,指程序中的非正常運(yùn)行狀態(tài),在其它語言中稱為異常或錯(cuò)誤將每個(gè)錯(cuò)誤中創(chuàng)建個(gè)Error對象,描述...
摘要:是完全的面向?qū)ο笳Z言,它們通過類的形式組織函數(shù)和變量,使之不能脫離對象存在。而在基于原型的面向?qū)ο蠓绞街校瑢ο髣t是依靠構(gòu)造器利用原型構(gòu)造出來的。 JavaScript 函數(shù)式腳本語言特性以及其看似隨意的編寫風(fēng)格,導(dǎo)致長期以來人們對這一門語言的誤解,即認(rèn)為 JavaScript 不是一門面向?qū)ο蟮恼Z言,或者只是部分具備一些面向?qū)ο蟮奶卣鳌1疚膶⒒貧w面向?qū)ο蟊疽猓瑥膶φZ言感悟的角度闡述為什...
摘要:應(yīng)該非常小心,避免出現(xiàn)不使用命令直接調(diào)用構(gòu)造函數(shù)的情況。上面代碼表示,使用屬性,確定實(shí)例對象的構(gòu)造函數(shù)是,而不是。當(dāng)然,從繼承鏈來看,只有一個(gè)父類,但是由于在的實(shí)例上,同時(shí)執(zhí)行和的構(gòu)造函數(shù),所以它同時(shí)繼承了這兩個(gè)類的方法。 基本概念 類和實(shí)例是大多數(shù)面向?qū)ο缶幊陶Z言的基本概念 類:類是對象的類型模板 實(shí)例:實(shí)例是根據(jù)類創(chuàng)建的對象但是,JavaScript語言的對象體系,不是基于類的,...
摘要:情況沒有明確作用對象的情況下,通常為全局對象例如函數(shù)的回調(diào)函數(shù),它的就是全局對象。正因如此,機(jī)器可以作為這類對象的標(biāo)志,即面向?qū)ο笳Z言中類的概念。所以機(jī)器又被稱為構(gòu)造函數(shù)。原型鏈也就是繼承鏈。 JS面向?qū)ο蠖?this/原型鏈/new原理 阮一峰JavaScript教程:面向?qū)ο缶幊?阮一峰JavaScript教程:實(shí)例對象與 new 命令 阮一峰JavaScript教程:this 關(guān)...
摘要:之面向?qū)ο罂偨Y(jié)前言在中是沒有類的概念的,所以它的對象與基于類的語言中的對象不同。一理解對象張三上面通過構(gòu)造函數(shù)創(chuàng)建了一個(gè)對象,并為它添加了三個(gè)屬性。 JavaScript之面向?qū)ο罂偨Y(jié) 前言:在ECMAScript中是沒有類的概念的,所以它的對象與基于類的語言中的對象不同。ECMA-262把對象總結(jié)為:無序?qū)傩缘募希鋵傩园局怠ο蠡蛘吆瘮?shù)。 一、理解對象 var person...
閱讀 925·2021-11-25 09:43
閱讀 1299·2021-11-17 09:33
閱讀 3018·2019-08-30 15:44
閱讀 3315·2019-08-29 17:16
閱讀 485·2019-08-28 18:20
閱讀 1643·2019-08-26 13:54
閱讀 557·2019-08-26 12:14
閱讀 2177·2019-08-26 12:14