javascript - bind方法出错?哪里
本文介绍了javascript - bind方法出错?哪里的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
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() {
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构造函数创建的
我们修改一下
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
这篇关于javascript - bind方法出错?哪里的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文