摘要:動態(tài)綁定的并不指向自身。是在運行時候進行綁定的,,并不是編寫的時候綁定的。就是這個記錄的一個屬性。最常見的執(zhí)行上下文就是,如很明顯,函數(shù)在這個環(huán)境下執(zhí)行,所以指向了。四條綁定規(guī)則的優(yōu)先級優(yōu)先級最高的是綁定,中調(diào)用函數(shù),綁定到新創(chuàng)建的對象中。
動態(tài)綁定
JavaScript的this并不“指向自身”。
this是在運行時候進行綁定的,,并不是編寫的時候綁定的。
this指向執(zhí)行上下文,何為執(zhí)行上下文,我的理解是函數(shù)在“哪里”執(zhí)行的,這個記錄會包含函數(shù)在哪里會被調(diào)用(調(diào)用棧),函數(shù)的調(diào)用方式,傳入?yún)?shù)等信息。this就是這個記錄的一個屬性。最常見的執(zhí)行上下文就是window,如
var a=2; function foo(){ alert(this.a); //2 } foo();
很明顯,foo函數(shù)在window這個“環(huán)境”下執(zhí)行,所以this指向了window。(但在嚴(yán)格模式下,this不默認指向window,所以代碼彈出undefined)
function foo(){ alert(this.a); } var obj={ a:2, foo:foo } obj.foo(); //2
函數(shù)foo在obj的環(huán)境下執(zhí)行,this默認綁定到obj上。
以上兩種都屬于默認綁定。
js中有call()和apply()可以顯性的傳入要綁定的對象
var obj={ a:10 } function foo(){ alert(this.a); } foo.call(obj); // 10
?new綁定
function foo(a){ this.a=a } var bar=new foo(20); console.log(bar.a); // 20
使用new來調(diào)用foo()時。我們會構(gòu)造一個新對象并把它綁定到foo()調(diào)用中的this上。
this四條綁定規(guī)則的優(yōu)先級優(yōu)先級最高的是new綁定,new中調(diào)用函數(shù),this綁定到新創(chuàng)建的對象中。
其次的是call,apply中顯性傳入要綁定的對象。
函數(shù)是否在某個上下對象中調(diào)用,如果是,this綁定的是上下文對象
如果都不是,函數(shù)在全局對象執(zhí)行,則綁定到全局對象中,在嚴(yán)格模式下,就綁定到undefined。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/79345.html
摘要:我們使用最基本的事就是用來展現(xiàn)數(shù)據(jù)。使得展現(xiàn)數(shù)據(jù)變得簡單,并且當(dāng)數(shù)據(jù)改變時,能自動保持的更新。使用了內(nèi)部的虛擬,當(dāng)數(shù)據(jù)發(fā)生改變,先在虛擬中計算變化,最后將變動的部分反應(yīng)到真實的中。可以把它看作有著和狀態(tài)并且可以返回結(jié)構(gòu)的函數(shù)。 我們使用UI最基本的事就是用來展現(xiàn)數(shù)據(jù)。React使得展現(xiàn)數(shù)據(jù)變得簡單,并且當(dāng)數(shù)據(jù)改變時,React能自動保持UI的更新。 開始 創(chuàng)建一個簡單的Demo: ...
摘要:是用寫的一個第三方模塊,用于快速創(chuàng)建命令行。快速使用的使用大致有兩個步驟使用裝飾一個函數(shù),使之成為命令行接口使用等裝飾函數(shù),為其添加命令行選項等。本文標(biāo)題為命令行神器簡明筆記本文鏈接為參考資料學(xué)習(xí)筆記模塊 Click Click 是用 Python 寫的一個第三方模塊,用于快速創(chuàng)建命令行。我們知道,Python 內(nèi)置了一個 Argparse 的標(biāo)準(zhǔn)庫用于創(chuàng)建命令行,但使用起來有些繁瑣,...
摘要:這樣每個實例獨享自己的屬性,并和其他同類型的實例共享方法構(gòu)造函數(shù)原型以上這種方式定義的類型,可以通過來判斷一個實例是否是類型的實際上是通過實例的原型鏈來判斷一個對象是否某個類型的實例的,具體的細節(jié)后面會詳細介紹。 JavaScript面向?qū)ο缶幊? 如何定義自定義類型 首先需要明確,JavaScript并不是傳統(tǒng)意義上的OO語言,它并沒有class的概念, 而是包含了另一套異常強大的...
摘要:然而事實上并不是。函數(shù)本身也是一個對象,但是給這個對象添加屬性并不能影響。一圖勝千言作者給出的解決方案,沒有麻煩的,沒有虛偽的,沒有混淆視線的,原型鏈連接不再赤裸裸。所以是這樣的一個函數(shù)以為構(gòu)造函數(shù),為原型。 注意:本文章是個人《You Don’t Know JS》的讀書筆記。在看backbone源碼的時候看到這么一小段,看上去很小,其實忽略了也沒有太大理解的問題。但是不知道為什么,我...
摘要:它的原型也是對象。只要你完全拋開面向?qū)ο蟮睦^承思路來看的原型繼承,你會發(fā)現(xiàn)它輕便但強大。最后寫出來的代碼會是這樣請注意,只有函數(shù)才有屬性,它是用來做原型繼承的必需品。 一篇文章讓你搞清楚 JavaScript 繼承的本質(zhì)、prototype、__proto__、constructor 都是什么。 很多小伙伴表示不明白 JavaScript 的繼承,說是原型鏈,看起來又像類,究竟是原型還...
閱讀 1015·2021-10-19 11:42
閱讀 2973·2021-09-10 10:51
閱讀 677·2021-09-09 09:33
閱讀 1760·2021-09-01 10:43
閱讀 2768·2019-08-30 12:43
閱讀 3516·2019-08-30 11:24
閱讀 2114·2019-08-30 10:56
閱讀 2777·2019-08-29 11:00