一直都知道call和apply,用的真的很少,今天想起来了,就随便说说吧

1:基本用法

看到call和apply,大家想到的应该都是一句话 改变对象执行的上下文

2:apply和call的用法

其实call和apply的用意简单来说都一样,就是改变this 的指向
这也是他们的相同点
下面看一个具体的demo
var person = {
    name: 'xiao ming',
    age: 18,
    who: function () {
        console.log( 'my name is ' + this.name + ' , ' + this.age + ' years old' );
        console.log( person === this);
    }
}
person.who();
person.who.apply({name:'123',age:15});
person.who.call({name:'123',age:15});
person.who.call({name:'123'})
这样person的指向就改变了

3:apply和call的不同

先看下apply和call 的用法

call

function.call(obj[,arg1[, arg2[, [,.argN]]]]])

apply

function.apply(obj[,argArray])

可以看出,它们里面传入的参数不同。

那到底什么时候该用apply,什么时候用call呢

根据你要传入的参数来做选择,不需要传参或者只有1个参数的时候,用call,当要传入多个对象时,用apply

4:apply和call其他用法

function superClass () {this.a = 1;this.print = function () {console.log(this.a);}
}function subClass () {superClass.call(this);this.print();
}
用call实现继承,subClass通过call实现对superClass 的继承。

本文参考:https://www.jianshu.com/p/131ce0390cf8

call和apply用法相关推荐

  1. boost::hana::apply用法的测试程序

    boost::hana::apply用法的测试程序 实现功能 C++实现代码 实现功能 boost::hana::apply用法的测试程序 C++实现代码 #include <boost/han ...

  2. js中call与apply用法

    来源:http://blog.csdn.net/sunboy_2050/article/details/6592082 前天去面试,有个gg问了一些js知识,其中有一道call与apply用法的题目, ...

  3. js apply()用法详解

    目录 apply作用 改变this指向 将数组入参变为一般入参 把arguments改为真正的数组 尾言 apply作用 作用有两个,跟它的入参有关. 改变this指向. 将数组入参变为一般入参. 改 ...

  4. Javascript call 和 apply 用法

    Call 和 Apply 的一个小例子 function changeColor(color){this.style.backgroundColod = color; } //1 changeColo ...

  5. mysql math.max_Math.max.apply()用法

    apply的一些其他巧妙用法 Math.max.apply( null, [12,23,34,45] ); //细心的人可能已经察觉到,在我调用apply方法的时候, // 第一个参数是对象(this ...

  6. kotlin特性之object、apply用法总结

    前言 最近试用了下kotlin,因为也是一个在jvm执行的静态语言,所以快速熟悉了下语法就直接用了.但是用的过程中,还是有些地方花费了很长时间才理解.仅此记录下来 object关键字 object是k ...

  7. javascript函数进阶详细内容 函数闭包 箭头函数 call bind apply用法 偏函数 回调函数

    JS函数进阶 这次的内容我会给大家详细介绍函数方面的内容 1.箭头函数:ES6新增的定义函数的方式,箭头函数是用来简化函数定义语法的. - 箭头函数的语法: ()=>{} ()里面写形式参数,{ ...

  8. python里apply用法_Python apply函数的用法

    Python apply函数的用法 发布于 2014-08-07 21:02:24 | 674 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对象.解释型计 ...

  9. python apply lambda_函数,lambda和apply用法

    1 lambda lambda原型为:lambda 参数:操作(参数) lambda函数也叫匿名函数,即没有具体名称的函数,它允许快速定义单行函数,可以用在任何需要函数的地方.这区别于def定义的函数 ...

  10. scala的apply用法

    Scala中apply的用法 Scala中的 apply 方法有着不同的含义, 对于函数来说该方法意味着调用function本身, 以下说明摘自Programming in Scala, 3rd Ed ...

最新文章

  1. Java HashMap 核心源码解读
  2. IPIP地址、ipv4ipv6、子网掩码、网段计算、网络广播ID计算、默认网关、DNS服务器、DHCP服务器
  3. Hbase报错ERROR: KeeperErrorCode = NoNode for /hbase/master
  4. 常见的异步方式async 和 await
  5. 常用正则表达式整理【总结】
  6. svm核函数gamma参数_非线性SVM与核函数
  7. linux free 物理内存,Linux free显示系统内存使用
  8. linux gvim 列编辑,Linux——vim编辑器
  9. r语言t检验输出检验统计量_如何进行统计分析
  10. 关于DBC文件的创建(DBC文件系列其一)
  11. matlab各种文件读写,Matlab的各种数据读取、文件读写等操作汇总
  12. 通过微信公众号实现微信快捷登陆
  13. android opengl 坐标系,Android OpenGL ES从白痴到入门(五):妖艳的着色器
  14. windows用虚拟机vmWare安装黑苹果及注意事项
  15. linux-xsell、xftp连接虚拟机
  16. 【Spring】共性问题(九)
  17. 【云栖大会】马云口中创造未来的年轻人,把数据+环保玩出了新花样
  18. 21.12.8组合数
  19. 打开时空隧道,重演云栖72小时云世界
  20. 【数据结构】测试7 图

热门文章

  1. Linux下 用cmp工具备份,Linux常用命令梳理——文件管理(一)
  2. Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionExceptio
  3. 计算机组成原理总复习——知识点总结
  4. openfire--好友管理实现好友添加及分组管理
  5. linux终端开启softap(开WiFi热点)
  6. 【力扣每日一题】二叉树的最小深度
  7. Air Michael Jordan
  8. Android adb调试问题集锦
  9. Element tree清空树
  10. 【Springboot】微服务学习笔记十:微服务项目整合Kafka实现文章上下架功能