摘要:關鍵字描述一般被定義在函數中使用都會指向一個對象通過調用函數的位置來判斷當前指定的對象默認綁定表示在函數中使用,在調用該函數時,沒有具體的指向目標,會默認為指向全局對象示例代碼定義一個全局變量定義一個函數在函數調用時無法找到具體的對象,會指
this關鍵字 描述
this 一般被定義在函數中使用
this 都會指向一個對象
this 通過調用函數的位置來判斷當前指定的對象
默認綁定表示在函數中使用this,在調用該函數時,this沒有具體的指向目標,會默認為this指向全局對象
示例代碼/* 定義一個全局變量 */ var unm = 100; /* 定義一個函數 */ function fun() { console.log( this.unm ); } /* 在函數調用時this無法找到具體的對象,會指向全局對象 */ fun();// 顯示 undefined(在瀏覽器環境中會顯示匹配的全局變量數值)隱式綁定
表示一個函數被另一對象所擁有或包含,從形成的上下文關系,這時this會指向該對象
示例代碼/* 定義一個函數 */ function fun() { console.log( this.name ); } /* 定義一個對象 */ var obj = { name : "唐三", /* 該對象的方法為一個指定函數 - 形成上下文關系 */ fn : fun } /* 調用指定方法 */ obj.fn();// 顯示 唐三隱式綁定的丟失
將一個指定對象中的指定方法賦值給一個全局變量,在調用全局變量時,this將從原本指向具體對象,變成指向全局對象
示例代碼/* 定義一個函數 */ function fun() { console.log( this.name ); } /* 定義一個對象 */ var obj = { name : "唐三", /* 該對象的方法為一個指定函數 - 形成上下文關系 */ fn : fun } /* 調用指定方法 */ obj.fn();// 顯示 唐三 /* 將指定對象的方法賦值給一個變量 */ var s = obj.fn; /* 調用變量 */ s();// 顯示 undefined顯示綁定
用于處理隱式綁定丟失的一種方法
在調用函數時就明確this所指向的對象
示例代碼/* 定義一個函數 */ function fun() { console.log( this.name ); } /* 定義一個對象 */ var obj = { name : "唐三", /* 該對象的方法為一個指定函數 - 形成上下文關系 */ fn : fun } /* 調用指定方法 */ obj.fn();// 顯示 唐三 /* 將指定對象的方法賦值給一個變量 */ var s = obj.fn; /* 調用變量并明確指定this所指定的對象 */ s.apply( obj );// 顯示 唐三new綁定
通過構造函數所創建的對象,會成為該構造函數中的this所指向的對象
示例代碼/* 定義一個構造函數 */ function Fun() { /* this會指向該構造函數所創建的對象 */ this.name = "唐三"; } /* 創建對象 */ var obj = new Fun(); console.log( obj.name );// 顯示 唐三被忽略的this
在使用apply()方法或call()方法來調用函數時,將null或undefined做為this綁定的對象傳入時,會被忽略,并將this的綁定方式變成默認綁定
示例代碼/* 定義函數 */ function fun(){ console.log( this.s ); } /* 定義全局變量 */ var s = 100; /* 使用call()方法來調用指定函數 */ fun.call( null );// 顯示 undefined (在瀏覽器環境中會顯示 100 全局變量)間接引用
表示將this從隱式綁定或顯示綁定(有明確的指向對象)變成默認綁定(指向全局對象)
示例代碼/* 定義一個函數 */ function fun() { console.log( this.s ); } /* 定義一個全局變量 */ var s = 10; /* 定義一個對象 */ var obj = { s : 20, fn : fun }; /* 調用方法 */ obj.fn();// 顯示 20 /* 定義另一個對象 */ var x = { s : 30 }; /* 將obj對象中的方法新增到新對象中并調用 */ ( x.fu = obj.fn )();// 顯示 undefined(瀏覽器環境中會顯示 10 全局變量)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96940.html
摘要:一錯誤與異常概述錯誤,指程序中的非正常運行狀態,在其它語言中稱為異常或錯誤將每個錯誤中創建個對象,描述包含的錯誤信息通過使用提供異常的處理語句,可以用結構化方式捕捉發生錯誤,異常處理代碼與核心代碼實現分離語句語句是指中處理異常一種標準方式, JS(JavaScript)一.錯誤與異常1.概述錯誤,指程序中的非正常運行狀態,在其它語言中稱為異常或錯誤將每個錯誤中創建個Error對象,描述...
摘要:是完全的面向對象語言,它們通過類的形式組織函數和變量,使之不能脫離對象存在。而在基于原型的面向對象方式中,對象則是依靠構造器利用原型構造出來的。 JavaScript 函數式腳本語言特性以及其看似隨意的編寫風格,導致長期以來人們對這一門語言的誤解,即認為 JavaScript 不是一門面向對象的語言,或者只是部分具備一些面向對象的特征。本文將回歸面向對象本意,從對語言感悟的角度闡述為什...
摘要:應該非常小心,避免出現不使用命令直接調用構造函數的情況。上面代碼表示,使用屬性,確定實例對象的構造函數是,而不是。當然,從繼承鏈來看,只有一個父類,但是由于在的實例上,同時執行和的構造函數,所以它同時繼承了這兩個類的方法。 基本概念 類和實例是大多數面向對象編程語言的基本概念 類:類是對象的類型模板 實例:實例是根據類創建的對象但是,JavaScript語言的對象體系,不是基于類的,...
摘要:情況沒有明確作用對象的情況下,通常為全局對象例如函數的回調函數,它的就是全局對象。正因如此,機器可以作為這類對象的標志,即面向對象語言中類的概念。所以機器又被稱為構造函數。原型鏈也就是繼承鏈。 JS面向對象二:this/原型鏈/new原理 阮一峰JavaScript教程:面向對象編程 阮一峰JavaScript教程:實例對象與 new 命令 阮一峰JavaScript教程:this 關...
摘要:之面向對象總結前言在中是沒有類的概念的,所以它的對象與基于類的語言中的對象不同。一理解對象張三上面通過構造函數創建了一個對象,并為它添加了三個屬性。 JavaScript之面向對象總結 前言:在ECMAScript中是沒有類的概念的,所以它的對象與基于類的語言中的對象不同。ECMA-262把對象總結為:無序屬性的集合,其屬性包含基本值、對象或者函數。 一、理解對象 var person...
閱讀 916·2021-11-25 09:43
閱讀 1283·2021-11-17 09:33
閱讀 2999·2019-08-30 15:44
閱讀 3301·2019-08-29 17:16
閱讀 472·2019-08-28 18:20
閱讀 1625·2019-08-26 13:54
閱讀 547·2019-08-26 12:14
閱讀 2166·2019-08-26 12:14