sayHi:function(a,b){
var hi=this.name+" 在向你问好!“+a +” " +b;
return hi;
}
}
var pig={
name:‘小猪’
}
console.log(person.sayHi.apply(pig,[‘真的’,‘很舒服’]));
输出:小猪 在向你问好!真的 很舒服
可以看到实参是通过Array的方式传入的
我们就在之前myCall的基础上稍作修改就可以了
Function.prototype.myApply=function(){
var ret;
var args=arguments;
if(args.length==0){
return this();//window
}else{
var context,arg,newArgs;
context = args[0];//第一个参数是作为上下文
if(context==null){//处理null 和 undefined
return this();//window
}
if(typeof context!==‘object’){
context = {};
}
context[this.name]=this;
var param = args[1]||[];//取到参数数组
if(!(param instanceof Array)){//当第2个参数不是数组的时候抛出错误
throw Type