apply()和call()都是ES6语法的,并且都是函数的方法。

function foo() {
alert(this.name)
}
var obj = {
name: '小明'
}
foo() // undefine

这里this指向的是window。

function foo() {
alert(this.name)
}
var obj = {
name: '小明',
fn: foo
}
obj.fn() // 小明

这里this指向的是obj。

但是现在我不想改变obj的数据,我要怎么实现呢?

function foo() {
alert(this.name)
}
var obj = {
name: '小明'
}
foo.apply(obj) //小明
foo.call(obj) //小明

上面就是利用了apply()或者call()。

那实际开发中,有哪些地方用到呢?

比如现在我们要获取数组中的最小值。

使用Math.max()这个方法,但是它接收的参数是数组以逗号分隔开的形式的。

alert(Math.max(1,2,3)) //

很明显,上面这种应该不是我们想要的结果,这时候,就可以使用我们的apply()了。

var arr = [1, 3, 2]
alert(Math.max.apply(window, arr)) //

最新文章

  1. 列表组件抽象(2)-listViewBase说明
  2. c# DataGridView 的一些属性设置,序号,合并头
  3. canvas知识点
  4. Django 基础教程
  5. jquery ajax给外部变量赋值 async: false
  6. layoutsubviews什么时候调用
  7. Spark学习笔记-使用Spark History Server
  8. underscore api 概览
  9. python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET
  10. Asp.net vNext 学习3
  11. led模组的优点和却点
  12. 201521123006 《Java程序设计》第3周学习总结
  13. EXP导出aud$报错EXP-00008,ORA-00904 解决
  14. Kali Linux桥接模式配置DNS服务器
  15. 洛谷P1072Hankson的趣味题题解
  16. 七、Servlet概述
  17. Hello 2019
  18. CODEFORCES掉RATING记 #4
  19. js 的学习
  20. django中的数据库迁移

热门文章

  1. css/js 超出部分显示省略号
  2. keras对图像数据进行增强 | keras data augmentation
  3. [07]ASP.NET Core 进程外(out-of-process)托管
  4. hive引擎的选择:tez和spark
  5. 10、Fiddler中设置断点修改Response
  6. C# Mutex to make sure only one unique application instance started
  7. list方法补充
  8. 【JavaWeb】JSTL标签库
  9. [20190522]How to get dump or list parameters set at session level.txt
  10. Bitbucket与git上传源码的使用方法