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