JavaScript this解析

this的五种绑定方式

  1. 「默认绑定」

默认绑定是指在独立函数调用时,this 会绑定到全局对象(在浏览器环境中是 window,在 Node.js 环境中是 global)。在严格模式下,默认绑定会将 this 绑定到 undefined。

function sayHello({
  console.log(this);
}
sayHello(); // 在浏览器中:window,Node.js 中:global 或 undefined(严格模式)

2.「隐式绑定」

当函数作为对象的方法被调用时,this 会绑定到调用该方法的对象。

const person = {
  name"Alice",
  sayHellofunction({
    console.log(`Hello, my name is ${this.name}.`);
  }
};
person.sayHello(); // "Hello, my name is Alice."
  1. 「显式绑定」:

通过 call、apply 或 bind 方法,可以显式地指定函数调用时的 this 值。

function sayHello({
  console.log(`Hello, my name is ${this.name}.`);
}

const person1 = { name"Alice" };
const person2 = { name"Bob" };

sayHello.call(person1); // "Hello, my name is Alice."
sayHello.apply(person2); // "Hello, my name is Bob."

const sayHelloToPerson1 = sayHello.bind(person1);
sayHelloToPerson1(); // "Hello, my name is Alice."

4.「new 绑定」:

当一个函数被用作构造函数来创建对象时,this 会绑定到正在创建的新对象。

function Person(name{
  this.name = name;
}
const person = new Person("Bob");
console.log(person.name); // "Bob"
  1. 「箭头函数绑定」:

箭头函数的 this 值在函数创建时就已经确定,并且会捕获外部函数的 this 值。

const obj = {
  prop"value",
  getPropfunction({
    return () => {
      console.log(this.prop); // "value"
    };
  }
};
const func = obj.getProp();
func();


原文始发于微信公众号(前端大大大):JavaScript this解析

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/174187.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!