前端 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


目录
相关文章
|
9月前
|
JavaScript 前端开发 API
|
9月前
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
368 8
|
9月前
|
JavaScript 前端开发 容器
|
9月前
|
JavaScript 前端开发
|
9月前
|
存储 JavaScript 前端开发
|
10月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
10179 23
|
9月前
|
移动开发 JavaScript 前端开发
|
9月前
|
存储 JavaScript 前端开发
|
9月前
|
JavaScript 前端开发
|
9月前
|
JavaScript 前端开发