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(); //无反应??
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(); //无反应??
看代码,你 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]]); //6
foo.call(m, 5); //6
foo.bind(m, 5)(); //6
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答918 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
以上代码会执行错误,y变量没有定义
m=new m;
是的m不再是一个函数对象,为一个普通的对象,通过原来的m构造函数创建的我们修改一下
再修改一下