美文网首页
Javascript- Apply & Call的区别

Javascript- Apply & Call的区别

作者: JellyL | 来源:发表于2016-11-23 00:28 被阅读27次
    var sayHello = function() {
      console.log("hello, world");
    };
    

    调用这个方法时,可以直接:

    sayHello();
    
    var say = function(greeting){
       console.log(greeting + ', ' + this.name);
    };
    

    用call来调用:

    var person = {name: 'June'};
    say.call(person, 'Hello');  //Hello, June
    say.call(person, 'Goodbye'); //Goodbye, June
    

    用apply来调用:

    var person = {name: 'June'};
    say.apply(person, ['Hello']);  //Hello, June
    say.apply(person, ['Goodbye']); //Goodbye, June
    

    apply 和 call是很类似的,它们都能被其他方法调用来执行这些方法,它们在一个context中调用一个方法,它们的第一参数都是context。而它们最大的区别在于执行一个具有多个参数的方法。

    var update = function(name, age, size){ 
        this.name = name; 
        this.age = age; 
        this.size = size;
    };
    update.call(person, 'Slarty',  200,  '1xM');
    update.apply(person2, ['Slarty', 200, '1xM']); 
    

    call接收多个参数需要依次列出。在ECMAScript 6 中,如果参数个数不定时或者多个时,可以使用...操作符【注:不支持 IE, Safari <= 8, Android Browser, iOS Safari 7 and node.js <= 4. 】。

    fun.call(thisArg[, arg1[, arg2[, ...]]])
    

    apply第二个参数必须是个数组,数组由这些参数组成。

    fun.apply(thisArg, [argsArray])
    

    相关文章

      网友评论

          本文标题:Javascript- Apply & Call的区别

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