前端 JS 经典:apply、call、bind

简介: 前端 JS 经典:apply、call、bind

1. 概念

都是用来改变函数中 this 指向的。区别在于 apply、call 传参方式不一样,调用后,直接执行函数。bind 调用后,返回一个函数体,不直接执行函数。

2. 为什么用

那为什么要改变 this 指向呢。正常情况下,谁调用函数 this 就指向谁。那调用这个函数的那个谁,要访问另一个谁的属性或方法,就需要改变其 this 的指向,到另一个谁那去

3. 示例

// 例:打印用户信息的函数
const yqcoder = {
  name: "yqcoder",
  age: 18,
  sex: "man",
};
function userInfo(addAge) {
  return `name: ${this.name},age: ${this.age + addAge},sex:${this.sex}`;
}
 
// 直接调用,this 指向的是 window,如同 window.userInfo
userInfo(10); // name: ,age: NaN,sex:undefined
// 用 call 改变 this 指向 yqcoder 对象
userInfo.call(yqcoder, 10); // name: yqcoder,age: 1810,sex:man
// 用 apply 改变 this 指向 yqcoder 对象
userInfo.apply(yqcoder, [10]); // name: yqcoder,age: 28,sex:man
// 用 binde 改变 this 指向 yqcoder 对象
const fn = userInfo.bind(yqcoder);
fn(10); // name: yqcoder,age: 28,sex:man


目录
相关文章
|
16天前
|
JavaScript 前端开发
JavaScript的`apply`方法:函数的“应用”与“调用”
JavaScript的`apply`方法:函数的“应用”与“调用”
|
16天前
|
JavaScript 前端开发
JavaScript的`bind`方法:函数的“复制”与“定制”
JavaScript的`bind`方法:函数的“复制”与“定制”
|
16天前
|
JavaScript 前端开发
JavaScript的`call`方法:实现函数间的调用!
JavaScript的`call`方法:实现函数间的调用!
|
16天前
|
JavaScript 前端开发
关于 Angular.js 应用里的 $scope.$apply()
关于 Angular.js 应用里的 $scope.$apply()
38 8
|
17天前
|
前端开发 JavaScript
【Web 前端】 js中call、apply、bind有什么区别?
【4月更文挑战第22天】【Web 前端】 js中call、apply、bind有什么区别?
【Web 前端】 js中call、apply、bind有什么区别?
|
17天前
|
前端开发 JavaScript 网络协议
前端最常见的JS面试题大全
【4月更文挑战第3天】前端最常见的JS面试题大全
57 5
|
15天前
|
JSON JavaScript 前端开发
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
|
15天前
|
JavaScript 前端开发
web前端JS高阶面试题(1),高级开发工程师面试
web前端JS高阶面试题(1),高级开发工程师面试
|
17天前
|
存储 缓存 前端开发
2023前端面试题总结:JavaScript篇完整版(二)
2023前端面试题总结:JavaScript篇完整版(二)
|
17天前
|
存储 前端开发 JavaScript
2023前端面试题总结:JavaScript篇完整版(一)
2023前端面试题总结:JavaScript篇完整版(一)
102 0