欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js 函数中的this

程序员文章站 2022-06-30 19:13:54
...

资料

function 函数

没有“this”的持久概念, 调用函数时,创建this

function hello(thing) {
  console.log(this + " says hello " + thing);
}

person = { name: "Brendan Eich" }
person.hello = hello;

// 在person中调用 hello, this被创建到了person
person.hello("world") // still desugars to person.hello.call(person, "world")

// 在window中调用 this被创建到了 window
hello("world") // "[object DOMWindow]world"

引用具有持久this值的函数

name = "global";

var person = {
  name: "Brendan Eich",
  hello: function() {
    console.log(this.name);
  }
};

var boundHello = function(arguments) {
  return person.hello.apply(person, arguments);
};
boundHello(); // Brendan Eich

let a = person.hello.bind(person);
a(); // Brendan Eich

let b = person.hello
b() // global

箭头函数

箭头函数捕获this => 创建函数的位置 而不是调用它的位置

let o = {
  a: 'ajanuw',
  hello: function(){
    //  返回箭头函数时,this已经被绑定了
    return () => {
      console.log(this.a)
    }
  }
}

let a = o.hello()
a()