箭头函数定义时确定,普通函数执行时确定

  1. class Student { constructor(name) {
  2. this.name = "Tom";
  3. }
  4. getInfo() {
  5. return {
  6. name: "Jerry",
  7. getName() {
  8. return this.name;
  9. },
  10. };
  11. }
  12. }
  13. var s = new Student();
  14. console.log(s.getInfo().getName()); // Jerry

如何打印出Tom,只能修改class中代码

  1. class Student { constructor(name) {
  2. this.name = "Tom";
  3. }
  4. getInfo() {
  5. return {
  6. name: "Jerry",
  7. getName:() => {
  8. return this.name;
  9. },
  10. };
  11. }
  12. }
  13. var s = new Student();
  14. console.log(s.getInfo().getName()); // Tom

obj 实例化,修改属性和重新实例化的指针问题
重新实例化后是另一个对象了,跟源对象没关系
image.png
“use strict”

函数在严格模式下——undefined

image.png
在函数内部,this的值取决于函数被调用的方式。
image.png

对象中的this——指向调用者

image.png
image.png
把obj1.赋值给obj2.f obj2也有了f 方法
image.png
obj1里面的o1是obj2 obj2里的fn是foo函数 在obj2里面调用的拿到obj2中的a
image.png

构造函数中的this——当前实例化对象

image.png

定时器中的this——window