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