var obj =function
fn()
fn();
obj.fn();
is not a function
fn.call(obj)
//首先我們讓原型上的call方法執行,在執行call方法的時候,我們讓fn方法中的this變為第乙個引數值obj;然後再把fn這個函式執行.
//自己模擬內建的call方法,寫乙個mycall方法,深入**call原理
function.prototype.mycall = function
(context)
fn.mycall(obj);
//首先fn1通過原型鏈機制找到function.prototype上的call方法,並且讓call()方法執行->此時call這個方法中的this就是我要操作的fn1,在call方法**執行過程中首先讓fn1中的"this關鍵字"變成fn2,然後在讓這個方法執行->1
fn1.call.call(fn2)
/*首先fn1通過原型鏈機制找到function.prototype上的call方法,然後在讓call方法通過原型在找到function原型上的call(因為call本身的值也是乙個函式,所以同樣可以找到function.prototype),在第二次找到call的時候讓方法執行,方法中的this是fn1.call,然後讓這個方法中的this變成fn2,最後fn1.call執行->2
*/
JS重寫內建 call 方法
let obj function fn params console.log fn.call obj,引數1 引數2 引數n 返回值 this指向了.call 的第乙個引數。2.從第二個引數到最後乙個引數,會對 fn 進行傳參。3.執行函式 fn let obj function fn params...
JS中的call 和apply 方法
1 方法定義 call方法 2 常用例項 a function add a,b function sub a,b add.call sub,3,1 這個例子中的意思就是用 add 來替換 sub,add.call sub,3,1 add 3,1 所以執行結果為 alert 4 注意 js 中的函式其...
js方法call和apply例項解析
在ecmascript v3中,給function原型定義了這兩個方法,這兩個方法的作用都是一樣的 使用這兩個方法可以像呼叫其他物件方法一樣呼叫函式,這句話是從書上抄的,至少我是沒讀明白這是什麼意思。下面說簡單易懂的,先看段 function introduce name,age var p new...