javascript - bind方法出错?哪里

查看:46
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆