摘要:關(guān)鍵字關(guān)鍵字描述本身沒(méi)有任何含義但它也可以代表任何含義被自動(dòng)定義在所有的函數(shù)作用域中都有一個(gè)共同點(diǎn)它總是要返回一個(gè)對(duì)象指向哪個(gè)對(duì)象不取決于定義在哪它取決于調(diào)用位置注意建議搞不明白時(shí)盡量不要使用否則會(huì)很混亂一定要理解之后使用的基本用法表示在函
this關(guān)鍵字 this關(guān)鍵字描述
this本身沒(méi)有任何含義,但它也可以代表任何含義
this被自動(dòng)定義在所有的"函數(shù)"作用域中
this都有一個(gè)共同點(diǎn),它總是要返回一個(gè)對(duì)象
this指向哪個(gè)對(duì)象,不取決于定義在哪,它取決于調(diào)用位置
注意: 建議搞不明白時(shí)盡量不要使用否則會(huì)很混亂,一定要理解之后使用
this的基本用法表示在函數(shù)中使用this,在調(diào)用該函數(shù)時(shí),this沒(méi)有具體的指向目標(biāo),會(huì)默認(rèn)為this指向全局對(duì)象
示例代碼:
// 定義一個(gè)全局變量 var v = 100; // this經(jīng)常被定義在函數(shù)的作用域中 function fn() { // this總是要返回一個(gè)對(duì)象 console.error(this.v);// this指向哪個(gè)對(duì)象,不取決于函數(shù)定義的位置 } // this指向哪個(gè)對(duì)象,取決于調(diào)用的位置 // fn();// 函數(shù)的調(diào)用 // 定義一個(gè)對(duì)象,將fn函數(shù)作為obj對(duì)象的方法 var obj = { v : 200, f : fn }; // obj.f(); console.error(this.v);
代碼分析圖:
隱式綁定丟失需要注意的是: 將一個(gè)指定對(duì)象中的指定方法賦值給一個(gè)全局變量,在調(diào)用全局變量時(shí),this將從原本指向具體對(duì)象,變成指向全局對(duì)象
表示一個(gè)函數(shù)被另一對(duì)象所擁有或包含,從形成的上下文關(guān)系,這時(shí)this會(huì)指向該對(duì)象
示例代碼:
// 定義一個(gè)全局變量 var v = 100; // this經(jīng)常被定義在函數(shù)的作用域中 function fn() { // this總是要返回一個(gè)對(duì)象 console.error(this.v);// this指向哪個(gè)對(duì)象,不取決于函數(shù)定義的位置 } // this指向哪個(gè)對(duì)象,取決于調(diào)用的位置 // fn();// 函數(shù)的調(diào)用 // 定義一個(gè)對(duì)象,將fn函數(shù)作為obj對(duì)象的方法 var obj = { v : 200, f : fn }; // obj.f(); console.error(this.v);
代碼分析圖:
用于處理隱式綁定丟失的一種方法
在調(diào)用函數(shù)時(shí)就明確this所指向的對(duì)象
示例代碼:
// 定義一個(gè)全局變量 var v = 100; // 定義一個(gè)函數(shù) function fn() { console.log(this.v); } // 定義一個(gè)對(duì)象 var obj = { v : 200, f : fn// 對(duì)象的f()方法指向fn()函數(shù) }; // 定義一個(gè)全局變量,并被賦值為對(duì)象obj的f()方法 var fun = obj.f; // 將fun作為一個(gè)函數(shù)進(jìn)行調(diào)用 fun.apply(obj);new綁定
通過(guò)構(gòu)造函數(shù)所創(chuàng)建的對(duì)象,會(huì)成為該構(gòu)造函數(shù)中的this所指向的對(duì)象
示例代碼:
function Hero(name) { this.name = name; } // this取決于函數(shù)調(diào)用的位置 var hero1 = new Hero("花木蘭"); var hero2 = new Hero("秦始皇"); console.log(hero1.name);// 調(diào)用結(jié)果為 花木蘭被忽略的this
在使用apply()方法或call()方法來(lái)調(diào)用函數(shù)時(shí),將null或undefined做為this綁定的對(duì)象傳入時(shí),會(huì)被忽略,并將this的綁定方式變成默認(rèn)綁定
示例代碼:
/* 定義函數(shù) */ function fn() { console.log(this.v); } /* 定義全局變量 */ var v = 100; fn.call(null);// 調(diào)用結(jié)果為 undefined (在瀏覽器環(huán)境中會(huì)顯示 100 全局變量)間接引用
表示將this從隱式綁定或顯示綁定(有明確的指向?qū)ο螅┳兂赡J(rèn)綁定(指向全局對(duì)象)
示例代碼:
/* 定義一個(gè)函數(shù) */ function foo() { console.log(this.a); } /* 定義一個(gè)全局變量 */ var a = 2; /* 定義一個(gè)對(duì)象 */ var o = { a : 3, foo : foo }; o.foo();// 調(diào)用結(jié)果為 3 var p = {a : 4}; // p.foo = o.foo; // p.foo();// 4 (p.foo = o.foo)();// 調(diào)用結(jié)果為 undefined(瀏覽器環(huán)境中會(huì)顯示 2 全局變量)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96938.html
摘要:面向?qū)ο竺嫦驅(qū)ο蟮母拍钏^面向?qū)ο缶陀贸橄蠓绞絼?chuàng)建基于顯示世界模型的一種變成模式面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑?duì)象互相協(xié)作的軟件設(shè)計(jì)備注面向?qū)ο笕Q(chēng)簡(jiǎn)稱(chēng)面向?qū)ο缶幊痰闹饕齻€(gè)特征是封裝所謂封裝就是按要求使用得到對(duì)象的結(jié)果相關(guān)數(shù)據(jù)用于存儲(chǔ) 面向?qū)ο?面向?qū)ο蟮母拍? 所謂面向?qū)ο缶陀贸橄蠓绞絼?chuàng)建基于顯示世界模型的一種變成模式,面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑?duì)象互相協(xié)作的軟件設(shè)計(jì) 備注...
摘要:原型原型是什么所謂原型就是類(lèi)型對(duì)象的一個(gè)屬性在函數(shù)定義時(shí)就包含了屬性它的初始值是以個(gè)空對(duì)象在中并沒(méi)有定義函數(shù)的原型類(lèi)型所以原型可以是任何類(lèi)型原型是用于保存對(duì)象的共享屬性和方法的原型的屬性和方法并不會(huì)影響函數(shù)本身的屬性和方法示例代碼類(lèi)型的屬性 原型 原型是什么 所謂原型(Prototype)就是Function類(lèi)型對(duì)象的一個(gè)屬性 在函數(shù)定義時(shí)就包含了prototype屬性,它的初始值是...
摘要:繼承原型鏈所謂言行鏈就是如果構(gòu)造函數(shù)或?qū)ο蟮脑椭赶驑?gòu)造函數(shù)或?qū)ο蟮脑驮僦赶驑?gòu)造函數(shù)或?qū)ο笠源祟?lèi)推最終的構(gòu)造函數(shù)或?qū)ο蟮脑l(xiāng)指向的原型由此形成一條鏈狀結(jié)構(gòu)被稱(chēng)之為原型鏈?zhǔn)纠a原型鏈通過(guò)構(gòu)造函數(shù)創(chuàng)建對(duì)象將的原型指向?qū)ο笸ㄟ^(guò)構(gòu)造函數(shù)創(chuàng)建對(duì)象 繼承 原型鏈 所謂言行鏈就是如果構(gòu)造函數(shù)或?qū)ο驛,A的原型指向構(gòu)造函數(shù)或?qū)ο驜,B的原型再指向構(gòu)造函數(shù)或?qū)ο驝,以此類(lèi)推,最終的構(gòu)造函數(shù)或?qū)ο蟮脑?..
摘要:如果沒(méi)有學(xué)習(xí)過(guò)計(jì)算機(jī)科學(xué)的程序員,當(dāng)我們?cè)谔幚硪恍﹩?wèn)題時(shí),比較熟悉的數(shù)據(jù)結(jié)構(gòu)就是數(shù)組,數(shù)組無(wú)疑是一個(gè)很好的選擇。 showImg(https://segmentfault.com/img/bVTSjt?w=400&h=300); 1、常見(jiàn) CSS 布局方式詳見(jiàn): 一些常見(jiàn)的 CSS 布局方式梳理,涉及 Flex 布局、Grid 布局、圣杯布局、雙飛翼布局等。http://cherryb...
閱讀 3574·2023-04-26 00:05
閱讀 963·2021-11-11 16:55
閱讀 3541·2021-09-26 09:46
閱讀 3527·2019-08-30 15:56
閱讀 920·2019-08-30 15:55
閱讀 2947·2019-08-30 15:53
閱讀 1960·2019-08-29 17:11
閱讀 826·2019-08-29 16:52