摘要:描述輸出輸出問題看到這個題目,第一反應(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。
按照上面的理解
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
摘要:函數(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...
摘要:最近在學習的表格排序,沒想到看不起眼的表格排序?qū)嶋H上卻暗含了眾多知識點。二實現(xiàn)表格排序使用獲取數(shù)據(jù)之所以使用動態(tài)獲取數(shù)據(jù),是為了使用文檔碎片綁定數(shù)據(jù)。 最近在學習js的表格排序,沒想到看不起眼的表格排序?qū)嶋H上卻暗含了眾多JS知識點。在這里記錄一下此次學習過程。希望對大家也有所幫助。 完整的表格排序涉及了下列這些知識點: call方法使用 sort方法深入 數(shù)據(jù)綁定 DOM映射 下面...
摘要:最近在學習的表格排序,沒想到看不起眼的表格排序?qū)嶋H上卻暗含了眾多知識點。二實現(xiàn)表格排序使用獲取數(shù)據(jù)之所以使用動態(tài)獲取數(shù)據(jù),是為了使用文檔碎片綁定數(shù)據(jù)。 最近在學習js的表格排序,沒想到看不起眼的表格排序?qū)嶋H上卻暗含了眾多JS知識點。在這里記錄一下此次學習過程。希望對大家也有所幫助。 完整的表格排序涉及了下列這些知識點: call方法使用 sort方法深入 數(shù)據(jù)綁定 DOM映射 下面...
摘要:相反,我們只需要在末尾里找出中的下一個函數(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ù)是運行時一個...
摘要:全局上下文在全局中,一律指向全局對象。特殊的以下情況中的需要進行特殊記憶。構(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 方法...
閱讀 1219·2021-11-22 12:05
閱讀 1344·2021-09-29 09:35
閱讀 641·2019-08-30 15:55
閱讀 3135·2019-08-30 14:12
閱讀 962·2019-08-30 14:11
閱讀 2882·2019-08-30 13:10
閱讀 2411·2019-08-29 16:33
閱讀 3338·2019-08-29 11:02