button.addEventListener("click", function() {
  console.log(this); // this 是 button
});
button.onclick = function() {
  console.log(this); // this 是 button
};
button.onclick = function() {
  console.log(this);
};

button.onclick.call(span); // this 是 span
$("ul").on("click", function() {
  console.log(this); // this 是 ul
});
$("ul").on("click", "li", function() {
  console.log(this); // this 是点击所对应的 li
});
function X() {
  return (object = {
    name: "object",
    options: null,
    f1(x) {
      this.options = x;
      this.f2();
    },
    f2() {
      this.options.f2.call(this);
    }
  });
}

var options = {
  name: "options",
  f1() {},
  f2() {
    console.log(this); // this 是 objcet
  }
};

var x = X();
x.f1(options);
function f1() {
  console.log(this); // this 在浏览器是 window
}

function f2() {
  "use strict";
  console.log(this); // this 是 undefined
}

let obj = {
  fn() {
    console.log(this);
  }
};

obj.fn(); // this 是 obj

let f3 = obj.fn;
f3(); //this 在浏览器是 window

var f4 = obj.fn;
f4(); //this 在浏览器是 window
window.f4(); //this 在浏览器是 window