this

JavaScript this 指向其所属的对象

发布于 12-25 10:29
  • 在全局使用,this 指向全局对象;
  • 在函数中
  1. 普通模式,this 指向全局对象;
  2. 严格模式,this 为 undefined
  • 调用 bind 、 apply 和 call 方法,this 指向方法的第一个参数;
  • 在方法中,this 指向方法所属的对象;
  • 在事件中,this 指向接收事件的元素


全局

this;
// Window


函数,普通模式

function f() {
  return this;
}
f();
// Window


函数,严格模式

"use strict";
function f() {
  return this;
}
f();
// Window


调用 applay

function f() {
  return this;
}

const obj = { a: 1 };
f.apply(obj);
// {a: 1}


方法

const obj = {
  a: 1,
  f: function() {
    return this;
  }
};
obj.f();
// {a: 1, f: f}

const obj2 = { b: 2 };
obj.f.apply(obj2);
// {b: 2}


事件

const button = document.createElement("button");
button.onclick = function() {
  return this;
};
button.onclick();
// <button></button>