摘要:題目封裝函數(shù),使的指向指定的對象。接收兩個參數(shù),第一個是綁定的值,第二個是一個參數(shù)數(shù)組。而呢,它的第一個參數(shù)也是綁定給的值,但是后面接受的是不定參數(shù),而不再是一個數(shù)組,也就是說你可以像平時給函數(shù)傳參那樣把這些參數(shù)一個一個傳遞。
題目
封裝函數(shù) f,使 f 的 this 指向指定的對象 。
輸入例子bindThis(function(a, b) { return this.test + a + b; }, {test: 1})(2, 3);輸出例子
6分析
該題目的要求是:封裝一個函數(shù)bindThis,該函數(shù)有兩個參數(shù),第一個參數(shù)是一個內(nèi)部有使用this指針的函數(shù)f,第二個參數(shù)是一個對象obj,執(zhí)行bindThis之后,返回一個函數(shù),該函數(shù)里面的this就被綁定到obj上面。
function f(a, b) { return this.test + a + b; } function bindThis(f, obj) { //你實現(xiàn)的部分 } //執(zhí)行函數(shù) var a = bindThis(f,{test:1}); a(2,3);解決方法
javascript的三劍客:bind apply call
1、解決方法一:使用bind()
function f(a, b) { return this.test + a + b; } function bindThis(f, obj) { //你實現(xiàn)的部分 return f.bind(obj); } //執(zhí)行函數(shù) var a = bindThis(f,{test:1}); console.log(a(2,3)); console.log(f(2,3));
6 NaN
2、解決方法二:使用apply()
function bindThis(f, obj) { //你實現(xiàn)的部分 return function () { return f.apply(obj, arguments); }; }
3、解決方法三:使用call()
function bindThis(f, obj) { //你實現(xiàn)的部分 return function (a,b) { return f.call(obj, a,b); }; }
call和apply基本的區(qū)別:參數(shù)不同。apply() 接收兩個參數(shù),第一個是綁定 this 的值,第二個是一個參數(shù)數(shù)組。而 call() 呢,它的第一個參數(shù)也是綁定給 this 的值,但是后面接受的是不定參數(shù),而不再是一個數(shù)組,也就是說你可以像平時給函數(shù)傳參那樣把這些參數(shù)一個一個傳遞。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/82557.html
摘要:如果你已經(jīng)對機制已有了解,但是由于兩者對象機制的巨大本質(zhì)差異,對它和構(gòu)造函數(shù),實例對象的關(guān)系仍有疑惑,本文或許可以解答你的問題。所有的原型對象都會自動獲得一個屬性,這個屬性的值是指向原型所在的構(gòu)造函數(shù)的指針。 幫助面向?qū)ο箝_發(fā)者理解關(guān)于JavaScript對象機制 本文是以一個熟悉OO語言的開發(fā)者視角,來解釋JavaScript中的對象。 對于不了解JavaScript 語言,尤其是習(xí)...
摘要:第四點也要著重講下,記住構(gòu)造函數(shù)被操作,要讓正常作用最好不能在構(gòu)造函數(shù)里 4) this、new、call和apply的相關(guān)問題 講解this指針的原理是個很復(fù)雜的問題,如果我們從javascript里this的實現(xiàn)機制來說明this,很多朋友可能會越來越糊涂,因此本篇打算換一個思路從應(yīng)用的角度來講解this指針,從這個角度理解this指針更加有現(xiàn)實意義。 下面我們看看在ja...
摘要:但是有一個總的原則,那就是指的是,調(diào)用函數(shù)的那個對象使用主要分四種情況,討論下指針的用法和注意事項一純粹的函數(shù)調(diào)用這是函數(shù)的最通常用法,屬于全局性調(diào)用,因此就代表全局對象。 this是Javascript語言的一個關(guān)鍵字它代表函數(shù)運行時,自動生成的一個內(nèi)部對象,只能在函數(shù)內(nèi)部使用,隨著函數(shù)使用場合的不同,this的值會發(fā)生變化。但是有一個總的原則,那就是this指的是,調(diào)用函數(shù)的那個對...
摘要:但是有一個總的原則,那就是指的是,調(diào)用函數(shù)的那個對象使用主要分四種情況,討論下指針的用法和注意事項一純粹的函數(shù)調(diào)用這是函數(shù)的最通常用法,屬于全局性調(diào)用,因此就代表全局對象。 this是Javascript語言的一個關(guān)鍵字它代表函數(shù)運行時,自動生成的一個內(nèi)部對象,只能在函數(shù)內(nèi)部使用,隨著函數(shù)使用場合的不同,this的值會發(fā)生變化。但是有一個總的原則,那就是this指的是,調(diào)用函數(shù)的那個對...
閱讀 3684·2021-11-25 09:43
閱讀 2600·2021-11-18 13:11
閱讀 2195·2019-08-30 15:55
閱讀 3272·2019-08-26 11:58
閱讀 2823·2019-08-26 10:47
閱讀 2230·2019-08-26 10:20
閱讀 1271·2019-08-23 17:59
閱讀 2999·2019-08-23 15:54