简明了解apply()和call()
2024-09-01 17:57:34
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)) //
最新文章
- 列表组件抽象(2)-listViewBase说明
- c# DataGridView 的一些属性设置,序号,合并头
- canvas知识点
- Django 基础教程
- jquery ajax给外部变量赋值 async: false
- layoutsubviews什么时候调用
- Spark学习笔记-使用Spark History Server
- underscore api 概览
- python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET
- Asp.net vNext 学习3
- led模组的优点和却点
- 201521123006 《Java程序设计》第3周学习总结
- EXP导出aud$报错EXP-00008,ORA-00904 解决
- Kali Linux桥接模式配置DNS服务器
- 洛谷P1072Hankson的趣味题题解
- 七、Servlet概述
- Hello 2019
- CODEFORCES掉RATING记 #4
- js 的学习
- django中的数据库迁移
热门文章
- css/js 超出部分显示省略号
- keras对图像数据进行增强 | keras data augmentation
- [07]ASP.NET Core 进程外(out-of-process)托管
- hive引擎的选择:tez和spark
- 10、Fiddler中设置断点修改Response
- C# Mutex to make sure only one unique application instance started
- list方法补充
- 【JavaWeb】JSTL标签库
- [20190522]How to get dump or list parameters set at session level.txt
- Bitbucket与git上传源码的使用方法