成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

fn1.call.call(fn2);

wendux / 3373人閱讀

摘要:描述輸出輸出問題看到這個題目,第一反應(yīng)是蒙圈的。理解有些繞,需要多念叨念叨琢磨琢磨。我覺得方法本身沒有具體什么出來,所以是。方法的功能把指定函數(shù)中的指向把指定函數(shù)執(zhí)行那么方法中的,即為指定函數(shù)。它改變了方法原型上的的指向。

描述
function fn1(){
    console.log(1);
}
function fn2(){
    console.log(2);
}
fn1.call(fn2); // 輸出1
fn1.call.call(fn2); // 輸出2
問題

看到這個題目,第一反應(yīng)是蒙圈的。

fn1.call(fn2); 這個是理解的。
fn1.call.call(fn2);這個蒙圈了。

理解

有些繞,需要多念叨念叨琢磨琢磨。

call 方法是Function.prototype原型上天生自帶的方法,所有的函數(shù)都可以調(diào)用的。

我覺得 call方法本身沒有具體return什么出來,所以是undefined。

Function.prototype.call=function call(context){
    // [native code]
    // call方法的功能
    // 1. 把指定函數(shù)中的this指向context
    // 2. 把指定函數(shù)執(zhí)行
    
    // 那么call方法中的this,即為指定函數(shù)。也就是說
    // 1. 把this中 的 this關(guān)鍵字指向context;
    // 2. 把指定函數(shù)執(zhí)行this();
};
fn1.call(fn2);

按照上面的理解

call 方法中的this是fn1

把call方法中的this(fn1)中的this指向fn2

調(diào)用 call方法中的this

所以調(diào)用的是 fn1 ,此時fn1中的 this 指向的是 fn2。
但是這個方法里面并沒有使用this,而是直接輸出了1。

fn1.call.call(fn2);

按照上面的理解

call 方法中的 this 是 fn1.call【所有函數(shù)都可以調(diào)用call,調(diào)用的是原型上call方法】

把call方法中的this (fn1.call) 中的this 指向fn2

調(diào)用call方法中的this

所以調(diào)用的是 fn2(這里有些繞,多念叨念叨琢磨琢磨),此時fn1.call中的this指向的是fn2。
它改變了call方法(Function.prototype原型上的call)的this指向。
此處調(diào)用了call方法中的this,即調(diào)用了fn2,輸出了2。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105286.html

相關(guān)文章

  • 手寫call、apply、bind函數(shù)

    摘要:函數(shù)特點可以改變我們當前函數(shù)的指向還會讓當前函數(shù)執(zhí)行題目自測思路解析執(zhí)行傳入三個參數(shù)函數(shù)內(nèi)部執(zhí)行傳入三個參數(shù)函數(shù)內(nèi)部執(zhí)行 call函數(shù) 特點: 1)可以改變我們當前函數(shù)的this指向 2)還會讓當前函數(shù)執(zhí)行 Function.prototype.call = function (context) { if (typeof this !== function) { thro...

    gecko23 評論0 收藏0
  • 案例學習總結(jié):原生JS實現(xiàn)表格排序

    摘要:最近在學習的表格排序,沒想到看不起眼的表格排序?qū)嶋H上卻暗含了眾多知識點。二實現(xiàn)表格排序使用獲取數(shù)據(jù)之所以使用動態(tài)獲取數(shù)據(jù),是為了使用文檔碎片綁定數(shù)據(jù)。 最近在學習js的表格排序,沒想到看不起眼的表格排序?qū)嶋H上卻暗含了眾多JS知識點。在這里記錄一下此次學習過程。希望對大家也有所幫助。 完整的表格排序涉及了下列這些知識點: call方法使用 sort方法深入 數(shù)據(jù)綁定 DOM映射 下面...

    ShevaKuilin 評論0 收藏0
  • 案例學習總結(jié):原生JS實現(xiàn)表格排序

    摘要:最近在學習的表格排序,沒想到看不起眼的表格排序?qū)嶋H上卻暗含了眾多知識點。二實現(xiàn)表格排序使用獲取數(shù)據(jù)之所以使用動態(tài)獲取數(shù)據(jù),是為了使用文檔碎片綁定數(shù)據(jù)。 最近在學習js的表格排序,沒想到看不起眼的表格排序?qū)嶋H上卻暗含了眾多JS知識點。在這里記錄一下此次學習過程。希望對大家也有所幫助。 完整的表格排序涉及了下列這些知識點: call方法使用 sort方法深入 數(shù)據(jù)綁定 DOM映射 下面...

    lauren_liuling 評論0 收藏0
  • JavaScript 中如何實現(xiàn)函數(shù)隊列?(一)

    摘要:相反,我們只需要在末尾里找出中的下一個函數(shù),再調(diào)用第二個調(diào)用這個函數(shù)負責找出中的下一個函數(shù)并執(zhí)行。我們現(xiàn)在來實現(xiàn)其實也可以用把拿出來通過去獲取中的函數(shù),每調(diào)用一次會加,從而達到取出下一個函數(shù)的目的。中大名鼎鼎的框架正是這樣實現(xiàn)中間件隊列的。 假設(shè)你有幾個函數(shù)fn1、fn2和fn3需要按順序調(diào)用,最簡單的方式當然是: fn1(); fn2(); fn3(); 但有時候這些函數(shù)是運行時一個...

    Kyxy 評論0 收藏0
  • this

    摘要:全局上下文在全局中,一律指向全局對象。特殊的以下情況中的需要進行特殊記憶。構(gòu)造函數(shù)當一個函數(shù)作為構(gòu)造函數(shù)使用時,構(gòu)造函數(shù)的指向由該構(gòu)造函數(shù)出來的對象。舉例使用綁定時,監(jiān)聽函數(shù)中的指向觸發(fā)事件的,表示被綁定了監(jiān)聽函數(shù)的元素。執(zhí)行與執(zhí)行同理。 我的博客地址 → this | The story of Captain,轉(zhuǎn)載請注明出處。 問:this 是什么? 答:this 是 call 方法...

    Airmusic 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<