call
var name =
'flten'
;var obj =
;function
fn(a, b, c)
; function.prototype.
mycall
=function
(obj)
// console.log(args);
//最重要的一步!說明了兩個問題:1.mycall內部的this是指向呼叫者fn函式(物件的);2.obj.func就是fn函式,obj物件呼叫了fn函式,因此fn函式內部的this指向obj
obj.fn =
this
;var result =
eval
("obj.fn("
+args+
")")
;delete obj.fn;
return result;
}//1.函式也是物件,因此這裡的fn作為函式物件呼叫了mycall
總是指向他的呼叫者
fn.mycall
(obj,
"我的"
,"名字"
,"是");
// 我的名字是軒靈
var name =
'flten'
;var obj =
;function
fn(a, b, c)
; function.prototype.
=function
(obj,arr)
else
// console.log(args);
//最重要的一步!說明了兩個問題:1.mycall內部的this是指向呼叫者fn函式(物件的);2.obj.func就是fn函式,obj物件呼叫了fn函式,因此fn函式內部的this指向obj
obj.fn =
this
;var result =
eval
("obj.fn("
+args+
")")
;delete obj.fn;
return result;}}
//1.函式也是物件,因此這裡的fn作為函式物件呼叫了mycall!
總是指向他的呼叫者
fn.(obj,
["我的"
,"名字"
,"是"])
;// 我的名字是軒靈
apply 方法和call 方法
obj.func.call obj1 是將obj1看做obj,呼叫func方法,將第乙個引數看做函式呼叫的物件,可以看做,將obj的方法給obj1使用 在函式體內this的值就是指向這個呼叫者,也就是第乙個引數,剩餘的引數都是需要傳遞給函式的值 例如 function add a,b return ...
玩轉方法 call和apply
在ecmascript v3中,給function原型定義了這兩個方法,這兩個方法的作用都是一樣的 使用這兩個方法可以像呼叫其他物件方法一樣呼叫函式,這句話是從書上抄的,至少我是沒讀明白這是什麼意思。下面說簡單易懂的,先看段 複製 如下 function introduce name,age var...
手寫call方法
關鍵字 call,function.prototype.call 自己來實現乙個call方法。語法 fn.call context arg1 call幹了些啥?繫結this到第乙個實參 執行函式並返回結果 function result context.fn args 用完後就刪除 delete c...