call、apply、bind的用法
时间:2019-09-06
本文章向大家介绍call、apply、bind的用法,主要包括call、apply、bind的用法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
call、apply、bind的作用是为了改变函数运行时this的指向
this就是当前行为执行的主体
call
call函数传入两个参数,第一个参数为对象,第二个及后面的参数用来传参。当第一个参数的列表为null或undefined时,默认指向window
var arr = [1, 2, 3, 4, 5];
var max = Math.max.call(null, arr[0], arr[1], arr[2], arr[3], arr[4])//89
Eg:
var obj = {
message:"My name is:"
}
function getName(firstName,lastName){
console.log(this.message + fisrtName + " " + lastName);
}
getName.call(obj,"Dot","Dolby");
apply
apply函数同样接收两个参数,第一个参数是要绑定的this的值,第二个参数是一个参数数组。当第一个参数为null、undefined的时候,默认指向window
var arr = [1, 2, 3, 89, 46];
var max = Math.max.apply(null,arr);
apply传入的多个参数,会依次作为形参进入函数中,比如max函数无法处理一个数组,但却可以同时处理多个参数,这样就可以调用了。看看下面的例子
Eg:
var obj = {
message:"My name is:"
}
function getName(firstName,lastName){
console.log(this.message,firstName + " " + lastName);
}
getNmae.apply(obj,["Dot","Dolby"]);
bind
bind函数也可以传入多个参数,指向要绑定的this的值。但值得注意的是,bind不会直接执行。需要使用括号调用才可以
Eg:
var obj = {
msg: "this is a message"
}
function getName() {
console.log(this.msg)
}
getName.bind(obj)();
如果我们只用getName.bind(obj);是不会被调用的,只是绑定了this
原文地址:https://www.cnblogs.com/seanxushuo/p/11477975.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 缓存及在 Python 中使用缓存
- 【xss-labs】xss-labs通关笔记(一)
- 在 jQuery Mobile 中使用 UI 组件
- 【内网渗透】关于内网代理转发技术
- 知识图谱项目前端可视化图论库——Cytoscape.js简介
- Matlab系列之文件操作
- 云开发 X 涂鸦:当小程序遇见物联网IoT,几行代码搞定智能插座控制
- Spring、SpringMVC和SpringBoot看这一篇就够了!
- React结合Redux实现Todolist
- JS事件,你真的懂吗(捕获,冒泡)?
- iptables速查
- React高级特性解析
- Mobx+Mobx-React快速上手 简单可扩展的状态管理解决方案
- PB数据毫秒级搜索之Elasticsearch(二)基础了解
- 设计模式 | 策略模式