JavaScript:函数的两个非继承来的方法apply()、c

2017-01-11  本文已影响0人  issac_宝华

这call()、apply()两个方法作用是相同的,都是用来改变将要调用的函数的作用域。它们的区别在于接受参数的方式。
而bing()的作用是绑定作用域。

function sum(num1, num2){
    return num1 + num2;
}
function callSum(num1, num2){
return sum.apply(this, [num1, num2]);
//or
//return sum.apply(this, arguments);
}
function callSum(num1, num2){
    return sum.call(this, num1, num2);
}

PS:上面连个例子传入的作用域都是this,而这两个callSum函数都是在全局作用域下调用,即this对象引用的是window

window.color = "red";
var obj = { color: "blue" };
function sayColor(){
    console.log(this.color);
}

sayColor.call(this);    //red
sayColor.call(window);  //red
sayColor.call(obj);     //blue

上面例子也看出call()和apply()方法最大的用还是,改变函数赖以运行的作用域

var temp = sayColor.bind(obj);
temp();  //blue

要注意的是:支持bind()方法的浏览器有,IE9+、Firefox4+、Safari5.1+、Opera12+、Chrome

上一篇 下一篇

猜你喜欢

热点阅读