实现call的方法。call的使用方法。function cal(){} var obj = {} cal.call(obj ,"sam","kavin") 改变指向,传入参数
Function.prototype.call(context){
//如果对象传入是空或者null的时候指向window
var context = context || window
var args = []
// 首先要获取调用call的函数,用this可以获取
context.fn = this;
//我们接着要把这个参数数组放到要执行的函数的参数里面去。
for(var i =1,len<arguments.length;i<len;i++){
args.push("arguments("+i+")")
}
var ret = eval("context.fn("+args+")")
delete context.fn
return·ret
}
实现 apply的方法 function cal(){} var obj = {} cal.call(obj ,["sam","kavin"]) 改变指向,传入参数
Function.prototype.apply2 = function(context,arr){
var context = context || window;
var res = ''
context.fn = this;
if(!arr){
res = context.fn()
}else{
var arg =[]
for(var i =0,len=arr.length;i<len;i++){
arg.push("arr("+i+")")
}
res = eval(context.fn(+arg+))
}
delete context.fn
return res
}