写点什么

改变 this 指向的方法

作者:linux大本营
  • 2023-04-22
    湖南
  • 本文字数:688 字

    阅读完需:约 2 分钟

  1. 使用 call() 方法: call() 方法可以改变函数的 this 指向,它的第一个参数是要绑定的 this 值,后面的参数是传递给函数的参数列表。例如:


function sayHello() {  console.log(this.name);}
var person1 = { name: 'Alice' };var person2 = { name: 'Bob' };
// 改变sayHello函数的this指向sayHello.call(person1); // 输出:AlicesayHello.call(person2); // 输出:Bob
复制代码


  1. 使用 apply() 方法: apply() 方法与 call() 方法类似,不同之处在于它的第二个参数是一个数组或类数组对象,数组中的每一项都会被依次作为参数传递给函数。例如:


function sayHello(greeting) {  console.log(greeting + ', ' + this.name);}
var person1 = { name: 'Alice' };var person2 = { name: 'Bob' };
// 改变sayHello函数的this指向和参数sayHello.apply(person1, ['Hello']); // 输出:Hello, AlicesayHello.apply(person2, ['Hi']); // 输出:Hi, Bob
复制代码


  1. 使用 bind() 方法: bind() 方法返回一个新的函数,该函数的 this 值被绑定到 bind() 方法的第一个参数,同时 bind() 方法的后续参数也会作为新函数的参数。例如:


function sayHello(greeting) {  console.log(greeting + ', ' + this.name);}
var person1 = { name: 'Alice' };var person2 = { name: 'Bob' };
// 绑定函数的this值和参数var sayHelloToAlice = sayHello.bind(person1, 'Hello');var sayHelloToBob = sayHello.bind(person2, 'Hi');
sayHelloToAlice(); // 输出:Hello, AlicesayHelloToBob(); // 输出:Hi, Bob
复制代码


相关技术视频教程:https://ke.qq.com/course/417774?flowToken=1013300

c/c++后端技术交流群:812855908

用户头像

还未添加个人签名 2020-11-26 加入

C/C++linux服务器开发群 812855908

评论

发布
暂无评论
改变this指向的方法_指针_linux大本营_InfoQ写作社区