call, apply,bind的区别与用法
2024-10-21 06:27:35
call, apply,bind的区别
相同点:都可以用来改变this指向
不同点:
call, apply:传参方式不同;
call从第二个参数开始都是传给函数的;
apply只有两个参数,第二个参数是数组,数组中的值都是传给函数。
call与apply改变函数的this指向后会立即执行
bind是改变函数的this指向并返回这个函数,并不会立即执行
call与apply的返回值是函数的执行结果,bind的返回值是改变this指向的拷贝
举例:
var person = {
names: 'Anne',
age: '23'
}
var sayHi = function (gender, hobbit) {
console.log(`我是${this.names},今年${this.age},爱好${hobbit},欢迎你的关注^_^`)
}
sayHi.call(person, 23, '前端开发') var person1 = {
names: 'Anne1',
age: '23'
}
var sayHi1 = function (gender, hobbit) {
console.log(`我是${this.names},今年${this.age},爱好${hobbit},欢迎你的关注^_^`)
}
sayHi1.apply(person1, [23, '吃吃喝喝^_^']) var person2 = {
names: 'Anne2',
age: '23'
}
var sayHi2 = function (gender, hobbit) {
console.log(`我是${this.names},今年${this.age},爱好${hobbit},欢迎你的关注^_^`)
}
sayHi2.bind(person2, 23, '旅游')()
call, apply适用场景:
看参数数量,参数越多,最好用apply,将参数放入数组中,进而函数调用,参数少的话,call就行了
最新文章
- 【原】iOS动态性(四):一行代码实现iOS序列化与反序列化(runtime)
- mongo 导入json数据
- JavaScript弹出窗口技巧
- css 中的度量单位
- TTL和CMOS
- javascript 对象和数组(花括号、方括号)
- Hql 中实用查询时候 引号的使用
- wxPython学习笔记(一)
- 模板模式(Template)
- JDBC Connection Reset问题分析
- viminfo: 无效的启动字符
- document.body的一些用法以及js中的常见问题
- memcached缓存技术
- SQL SERVER 执行动态SQL EXEC
- Python Learning: 01
- Docker系列之Docker容器(读书笔记)
- android recovery 升级时间与速度研究
- ASP.NET Identity详解
- useradd密码无效
- 20155222卢梓杰 实验八 Web基础
热门文章
- element上传图片组件使用方法|图片回显|格式转换base64
- 洛谷P1496 火烧赤壁【题解】
- Ant Design Table 如何动态自定义?Ant Popover 遮挡?
- DQL_分组查询-DQL_分页查询
- 【随笔记】Littlevgl 8.x 踩过的坑
- python实现通用excel导入到mysql
- ASP.NET Core 系列总结
- 线程基础知识 03 synchronized锁(对象在内存的布局和加上锁后对象在内存中的变化)
- C#NPOI操作Excel,实现Excel数据导入导出(支持多个sheet)
- Android JetPack~ DataBinding(数据绑定)(一) 集成与使用