摘要:里面的方法利用里面的函數(shù)輸出方法輸出代表的是對(duì)象,為全局變量,全局變量實(shí)際上是對(duì)象的一個(gè)屬性。而以方法調(diào)用時(shí),值為我們傳進(jìn)去的對(duì)象。方法方法實(shí)際上是與方法用法相同,只不過(guò)方法傳進(jìn)去的參數(shù)是以數(shù)組形式例如其他與并沒(méi)有區(qū)別。
js里面的call apply bind 方法 利用js里面的function函數(shù)
function example(a,b){ console.log(a+b) } example(1,2) 輸出 3call方法
var a = 1; function example(){ console.log(this.a) } 輸出 1
this代表的是window對(duì)象,a為全局變量,全局變量實(shí)際上是window對(duì)象的一個(gè)屬性。
var a = 1; var obj = { a=9; }; function example(b){ return this.a+b } console.log(example.call(obj,2))
輸出11,而不是3,實(shí)際上,call是改變函數(shù)里面的this對(duì)象的,如果以example()這種普通方式調(diào)用函數(shù)的話,this值為我們?cè)O(shè)置的全局變量。而以call方法調(diào)用時(shí),this值為我們傳進(jìn)去的obj對(duì)象。
apply方法apply方法實(shí)際上是與call方法用法相同,只不過(guò)apply方法傳進(jìn)去的參數(shù)是以數(shù)組形式例如
example.apply(obj,[2])
其他與call并沒(méi)有區(qū)別。
bind方法我們用上面的方法使用bind方法
var a = 1; var obj = { a=9; }; function example(b){ return this.a+b } console.log(example.bind(obj,2))
我們會(huì)發(fā)現(xiàn)打印出來(lái)的是一個(gè)函數(shù)
? example(b){ return this.a+b } }
我們?cè)侔褏?shù)去掉打印一下
console.log(example.bind(obj)) ? example(b){ return this.a+b } }
我們會(huì)發(fā)現(xiàn)并沒(méi)有變化
實(shí)際上bind是將obj對(duì)象與函數(shù)進(jìn)行綁定,如果我們需要使用,我們需要將函數(shù)重新創(chuàng)建一個(gè)變量,然后調(diào)用新的變量就可以了,
var newexample = example(); newexample()
如果我們?cè)龠M(jìn)行打印
console.log(newexample(2))
我們會(huì)得到11
好了,call apply bind 方法就介紹到這里了,你記住了嗎?文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87364.html
摘要:日常編碼中被開(kāi)發(fā)者用來(lái)實(shí)現(xiàn)對(duì)象冒充,也即顯示綁定。面試題源碼實(shí)現(xiàn),事實(shí)上是對(duì)基礎(chǔ)知識(shí)的一個(gè)綜合考核。原型鏈終端指向,不會(huì)有構(gòu)造函數(shù),也不會(huì)有等屬性,這些屬性來(lái)自。 call/apply/bind 日常編碼中被開(kāi)發(fā)者用來(lái)實(shí)現(xiàn) 對(duì)象冒充,也即 顯示綁定 this。 面試題:call/apply/bind源碼實(shí)現(xiàn),事實(shí)上是對(duì) JavaScript 基礎(chǔ)知識(shí)的一個(gè)綜合考核。 相關(guān)知識(shí)點(diǎn): 作...
摘要:其實(shí)它們都很簡(jiǎn)單,但是在處理一些與相關(guān)的函數(shù)的時(shí)候,用來(lái)改變函數(shù)中的指向,卻是必不可少的工具,所以必須掌握好它們的用法。 關(guān)于javascript中的bind、call、apply等函數(shù)的用法 我GitHub上的菜鳥倉(cāng)庫(kù)地址: 點(diǎn)擊跳轉(zhuǎn)查看其他相關(guān)文章 文章在我的博客上的地址: 點(diǎn)擊跳轉(zhuǎn) ? ? ? ? 前面的文章已經(jīng)說(shuō)到this的指向了,那么這篇文章就要說(shuō)一說(shuō)和this相關(guān)的三個(gè)...
摘要:眾所周知,這三個(gè)函數(shù)都是改變執(zhí)行上下文的,那么我們來(lái)捋一捋,這些函數(shù)內(nèi)部到底做了什么。 前言 稍微翻了一下call,apply, bind 的各種論壇上的文章, 發(fā)現(xiàn)講的都太淺了,大部分都只講了個(gè)用法, 對(duì)于實(shí)現(xiàn)的原理卻都沒(méi)有提,因此,在這里,我寫下這篇文章, 希望能讓大家認(rèn)識(shí)到原理所在。 眾所周知, 這三個(gè)函數(shù)都是改變執(zhí)行上下文的 , 那么我們來(lái)捋一捋,這些函數(shù)內(nèi)部到底做了什么。 c...
摘要:但是當(dāng)構(gòu)造函數(shù)顯示返回一個(gè)對(duì)象時(shí)就會(huì)將這個(gè)對(duì)象賦值給變量,的使用則無(wú)效。將參數(shù)全都傳入,它會(huì)把參數(shù)作為數(shù)組傳入。 首先了解this 如果想用好這幾個(gè)方法,需要先了解this被調(diào)用方式不同而導(dǎo)致值不同的各種情況,然后就會(huì)認(rèn)識(shí)到使用這幾個(gè)方法的原因在哪里。(可以指定this的值)全局上下文中this指向全局對(duì)象,函數(shù)上下文this取決于被調(diào)用的方式 例: 在非嚴(yán)格模式下,全局調(diào)用函數(shù)thi...
摘要:之前寫過(guò)一篇文章面試官問(wèn)能否模擬實(shí)現(xiàn)的和方法就是利用對(duì)象上的函數(shù)指向這個(gè)對(duì)象,來(lái)模擬實(shí)現(xiàn)和的。雖然實(shí)際使用時(shí)不會(huì)顯示返回,但面試官會(huì)問(wèn)到。非嚴(yán)格模式下,和,指向全局對(duì)象 前言 面試官出很多考題,基本都會(huì)變著方式來(lái)考察this指向,看候選人對(duì)JS基礎(chǔ)知識(shí)是否扎實(shí)。讀者可以先拉到底部看總結(jié),再谷歌(或各技術(shù)平臺(tái))搜索幾篇類似文章,看筆者寫的文章和別人有什么不同(歡迎在評(píng)論區(qū)評(píng)論不同之處),...
閱讀 1992·2021-11-22 14:45
閱讀 2612·2021-10-12 10:11
閱讀 776·2021-09-22 10:02
閱讀 1234·2019-08-30 15:55
閱讀 1147·2019-08-30 15:54
閱讀 3258·2019-08-30 15:54
閱讀 1196·2019-08-29 17:16
閱讀 3093·2019-08-28 17:55