摘要:老是忘掉這兩個(gè)東東的用下,寫下來做個(gè)記錄吧。如果第一個(gè)參數(shù)為,函數(shù)體內(nèi)的指向宿主對象,在瀏覽器中是。和的用途改變指向上面的例子就是啦模擬
老是忘掉這兩個(gè)東東的用下,寫下來做個(gè)記錄吧。
他們作用是一模一樣的,只是傳入的參數(shù)不一樣
apply
apply接受兩個(gè)參數(shù),第一個(gè)制定了函數(shù)體內(nèi)this對象的指向,第二個(gè)參數(shù)為一個(gè)帶下標(biāo)的集合(可遍歷對象),apply方法把這個(gè)集合中的元素作為參數(shù)傳遞給被調(diào)用的函數(shù):
var func = function(a, c, c){ alert([a,b,c]); //[1,2,3] } func.apply(null, [1,2,3]);
call
call傳入的參數(shù)不固定,和apply相同的是,第一個(gè)參數(shù)也是代表函數(shù)體內(nèi)的this指向,第二個(gè)參數(shù)開始往后,每個(gè)參數(shù)被依次傳入函數(shù):
var func = function(a, b, c){ alert([a,b,c]); //[1,2,3] } func.call(null, 1,2,3);
call是aplly的一顆語法糖。如果第一個(gè)參數(shù)為null,函數(shù)體內(nèi)的this指向宿主對象,在瀏覽器中是window。
call和apply的用途
1.改變this指向
上面的例子就是啦
2.Function.prototype.bind
模擬Function.prototype.bind
Function.prototype.bind = function(context){ var self = this; return function(){ return self.apply(context, arguments); } }; var obj = { name: "cxs" }; var func = function(){ alert(this.name); //cxs }.bind(obj); fun();
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79317.html
摘要:那么,它到底是如何工作的呢讓我們從一種更簡單的實(shí)現(xiàn)開始實(shí)際上這種實(shí)現(xiàn)代碼更短,并且更易讀是函數(shù)原型中的一個(gè)函數(shù),它調(diào)用函數(shù),使用第一個(gè)參數(shù)作為參數(shù),并傳遞剩余參數(shù)作為被調(diào)用函數(shù)的參數(shù)。 原文:The Most Clever Line of JavaScript 作者:Seva Zaikov 原文 最近 一個(gè)朋友 發(fā)給我一段非常有趣的 JavaScript 代碼,是他在某個(gè) 開源庫中...
摘要:和相同點(diǎn)改變指向可以傳參立即調(diào)用區(qū)別接收一個(gè)數(shù)組參數(shù),直接接收參數(shù)的性能會比差,因?yàn)橐獙?shù)組參數(shù)進(jìn)行判斷和解構(gòu)模擬實(shí)現(xiàn)傳遞的如果是或者,那么就是,否則傳遞進(jìn)來的就是要指向的從第二個(gè)參數(shù)開始就是要調(diào)用時(shí)用到參數(shù)的第二個(gè)參數(shù)為數(shù)組,數(shù)組中的元素 call和apply fn.call(isThis, arg1, arg2, ....) fn.apply(isThis, [arg1, arg2...
摘要:深入系列第十篇,通過和的模擬實(shí)現(xiàn),帶你揭開和改變的真相一句話介紹方法在使用一個(gè)指定的值和若干個(gè)指定的參數(shù)值的前提下調(diào)用某個(gè)函數(shù)或方法。如果有錯(cuò)誤或者不嚴(yán)謹(jǐn)?shù)牡胤?,請?wù)必給予指正,十分感謝。 JavaScript深入系列第十篇,通過call和apply的模擬實(shí)現(xiàn),帶你揭開call和apply改變this的真相 call 一句話介紹 call: call() 方法在使用一個(gè)指定的 this...
摘要:也就是說當(dāng)返回的函數(shù)作為構(gòu)造函數(shù)的時(shí)候,時(shí)指定的值會失效,但傳入的參數(shù)依然生效。構(gòu)造函數(shù)效果的優(yōu)化實(shí)現(xiàn)但是在這個(gè)寫法中,我們直接將,我們直接修改的時(shí)候,也會直接修改函數(shù)的。 JavaScript深入系列第十一篇,通過bind函數(shù)的模擬實(shí)現(xiàn),帶大家真正了解bind的特性 bind 一句話介紹 bind: bind() 方法會創(chuàng)建一個(gè)新函數(shù)。當(dāng)這個(gè)新函數(shù)被調(diào)用時(shí),bind() 的第一個(gè)參數(shù)...
摘要:綁定函數(shù)被調(diào)用時(shí),也接受預(yù)設(shè)的參數(shù)提供給原函數(shù)。原型鏈官方文檔上有一句話說明綁定過后的函數(shù)被實(shí)例化之后,需要繼承原函數(shù)的原型鏈方法,且綁定過程中提供的被忽略繼承原函數(shù)的對象,但是參數(shù)還是會使用。 bind 官方描述 bind() 函數(shù)會創(chuàng)建一個(gè)新函數(shù)(稱為綁定函數(shù)),新函數(shù)與被調(diào)函數(shù)(綁定函數(shù)的目標(biāo)函數(shù))具有相同的函數(shù)體(在 ECMAScript 5 規(guī)范中內(nèi)置的call屬性)。當(dāng)目標(biāo)...
閱讀 2429·2023-04-26 00:46
閱讀 587·2023-04-25 21:36
閱讀 733·2021-11-24 10:19
閱讀 2278·2021-11-23 09:51
閱讀 1024·2021-10-21 09:39
閱讀 837·2021-09-22 10:02
閱讀 1673·2021-09-03 10:29
閱讀 2699·2019-08-30 15:53