call apply bind

来源:互联网 发布:hl系统线切割怎么编程 编辑:程序博客网 时间:2024/05/19 06:51

apply和call类似

区别如下

 function Sum(num1,num2) {     return num1 + num2; } function callSum1(num1,num2) {    return Sum.apply(this,arguments);/*第二个参数是arguments或者数组*/ } function callSum2(num1,num2) {     return Sum.call(this,num1,num2);/*call直接传参数*/ } alert(callSum1(10,10));alert(callSum2(20,20));为什么需要这几个函数

var a = {    user:"追梦子",    fn:function(){        console.log(this.user);    }}var b = a.fn;b(); //undefined

我们是想打印对象a里面的user却打印出来undefined是怎么回事呢?如果我们直接执行a.fn()是可以的。

var a = {    user:"追梦子",    fn:function(){        console.log(this.user); //追梦子    }}var b = a.fn;b.call(a);


作用是  扩充函数的作用域

例如

window.color = 'red';var o = {    color : 'blue'};function showColor() {    alert(this.color);}showColor.call(this);//redshowColor.call(window);//redshowColor.call(o);//blue;


bind和call  apply的区别

//showColor.bind(o);//不显示var obj = showColor.bind(o);obj();//blue实际上bind返回的是一个修改过的函数

原创粉丝点击