function m(){ this.x=1 }; m=new m; function foo() { alert(this.x + y); } foo.apply(m, [5]); //无反应?? foo.call(m, 5); //无反应?? foo1=foo.bind(m, 5); foo1(); //无反应??
认证高级PHP讲师
function m(){ this.x=1 }; m=new m; function foo() { console.log(this.x + y); } foo.apply(m, [5]); // foo.call(m, 5); //无反应?? foo1=foo.bind(m, 5); foo1(); //无反应??
以上代码会执行错误,y变量没有定义m=new m;是的m不再是一个函数对象,为一个普通的对象,通过原来的m构造函数创建的
m=new m;
我们修改一下
function m(){ this.x=1 }; m=new m; function foo() { console.log(this.x + 2); } foo.apply(m, [5]); //输出 3 foo.call(m, 5); //输出 3 foo1=foo.bind(m, 5); foo1(); //输出3
再修改一下
function m(){ this.x=1 }; m=new m; function foo() { var argumentsValue=0; for(var i=0;i< arguments.length;i++){ argumentsValue = argumentsValue +arguments[i]; } console.log(this.x + argumentsValue); } foo.apply(m, [5]); //输出 6 foo.call(m, 5); //输出 6 foo1=foo.bind(m, 5); foo1(5); //输出10
看代码,你 foo 函数写错了。没有y变量
function m(){ this.x=1 }; m=new m; function foo() { alert(this.x + arguments[0]); } foo.apply(m, [5]); //无反应?? foo.call(m, 5); //无反应?? foo1=foo.bind(m, 5); foo1();
写成这个:function m(){
this.x=1
}; m=new m;function foo() { if(arguments[0] instanceof Array){ console.log((this.x + arguments0)); //arguments【0】【0】不是arguments0,segment抽了?}else{console.log((this.x + arguments[0]));}
} foo.apply(m, [[5]]); //6foo.call(m, 5); //6foo.bind(m, 5)(); //6
以上代码会执行错误,y变量没有定义
m=new m;
是的m不再是一个函数对象,为一个普通的对象,通过原来的m构造函数创建的我们修改一下
再修改一下
看代码,你 foo 函数写错了。没有y变量
写成这个:
function m(){
};
m=new m;
function foo() {
if(arguments[0] instanceof Array){
console.log((this.x + arguments0)); //arguments【0】【0】不是arguments0,segment抽了?
}else{
console.log((this.x + arguments[0]));
}
}
foo.apply(m, [[5]]); //6
foo.call(m, 5); //6
foo.bind(m, 5)(); //6