美文网首页
JavaScript:函数的两个非继承来的方法apply()、c

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

作者: issac_宝华 | 来源:发表于2017-01-11 03:08 被阅读0次

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

  • apply()
    接受两个参数。第一个参数是:作用域;第二个参数是:传入一个Array,元素是将调用的函数的参数,也可以直接传arguments对象[可选]
function sum(num1, num2){
    return num1 + num2;
}
function callSum(num1, num2){
return sum.apply(this, [num1, num2]);
//or
//return sum.apply(this, arguments);
}
  • call()
    和apply不同的是第二个参数开始,他不是传入一个Array,而是将参数逐个列出,即call的参数是不定的。
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()方法最大的用还是,改变函数赖以运行的作用域

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

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

相关文章

  • JavaScript 的apply,call和bind

    JavaScript 的apply,call和bind 每个函数都包含两个非继承而来的方法:apply(), ca...

  • JS中call()和apply()

    每个函数都包含两个非继承而来的方法:call()和apply(); 在JavaScript中,call和apply...

  • call 和 apply

    每个函数都包含两个非继承而来的方法:call()和apply();在JavaScript中,call和apply作...

  • JS中call()和apply()

    每个函数都包含两个非继承而来的方法:call()和apply(); 在JavaScript中,call和apply...

  • call()与apply()的区别

    JavaScript函数,事实上是对象,他们均有两个非继承而来的方法,它们就是call()和apply(),它们在...

  • 改变this指向

    每个函数都包含两个非继承来的方法call()和apply(); 使用call()或者apply(),可以改变thi...

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

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

  • call()与apply()的作用与区别

    每个函数都包含两个非继承而来的方法:apply()和call()。; call与apply都属于Function....

  • call 和 apply

    每个函数都有 call() 和 apply() 这两个非继承而来的方法。 call 和 apply 都是为了改变某...

  • this,call,apply,arguments

    每个函数都包含两个非继承而来的方法:apply()和call()。call与apply都属于Function.pr...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/shilbttx.html