- 方法中直接使用this
function demo1() {
//此时this指向window
console.log(this)
}
function demo2() {
//严格模式
'use strict'
//此时this的值为undefined
console.log(this)
}
- 通过实例调用类中的方法,this指向就是对象实例
class Person {
//接受参数 this指向类的实例对象
constructor(name, age){
this.name = name
this.age = age
}
//speak方法放在了哪里?====类的原型对象上,供实例使用
// 通过Person实例调用,这里的this就是Person实例
speak() {
console.log(`我叫${this.name},年龄${this.age}`)
}
}
const p = new Person('tom', 18)
p.speak()//通过实例调用speak
//此处是直接调用 this的指向是undefined
//实例中并没有speak属性,而是对象的原型对象才有
//为什么指向不是window呢?====因为类中默认开启了严格模式
const x = p.speak
x()