美文网首页
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的区别

    调用这个方法时,可以直接: 用call来调用: 用apply来调用: apply 和 call是很类似的,它们都能...

  • this_原型链_继承

    问题1: apply、call 、bind有什么作用,什么区别? apply和call call apply,调用...

  • 前端基础(问答24)

    keywords: this、闭包、apply、call。 apply、call 有什么作用,什么区别 apply...

  • bind()和call()和apply()的区别

    bind()和call()和apply()的区别 首先说说call()和apply()的区别 它们都是改变this...

  • this_原型链_继承

    this相关问题 apply、call 、bind的作用以及区别 call、apply和bind方法的用法以及区别...

  • this&原型链&继承

    1.apply、call 、bind有什么作用,什么区别? apply和call apply和call都是为了改变...

  • 理解JS中的 call, apply, bind方法

    call, apply, bind 方法的目的和区别 我们常说,call(), apply(),bind()方法的...

  • 高级2:this&原型链&继承

    问题1: apply、call 、bind有什么作用,什么区别 apply、 call的作用和区别基本语法: fn...

  • this

    1. call, apply 有什么作用?有什么区别? call和apply用来直接指定this的绑定对象;区别是...

  • JavaScript call & apply 区别

    网上就传着一个等式来介绍这两家伙: foo.call(this, arg1,arg2,arg3) == foo.a...

网友评论

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

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