class Class3 {
  get service() {
    return 'service'
  }
}

const class3Instance = new Class3()
console.log(class3Instance.service)
console.log(class3Instance)
// 👆 clas3Instance had Semi transparent service

var descriptor = Object.getOwnPropertyDescriptor(class3Instance, 'service')
console.log(descriptor, "descriptor")
// 👆 undefined





我期望class3Instance具有服务属性,但没有。

最佳答案

就像在class中直接定义的任何方法一样,它是原型的属性,而不是对象本身的属性。检查Class3.prototypeObject.getPrototypeOf(class3Instance)的描述符:



class Class3 {
  get service() {
    return 'service'
  }
}
const class3Instance = new Class3()
var descriptor = Object.getOwnPropertyDescriptor(Class3.prototype,'service')
console.log(descriptor,"descriptor")





class3Instance对象没有自己的service属性-访问class3Instance.service时,解释器会在class3Instance的内部原型上找到该属性名称,而不是在class3Instance本身上找到。

10-05 20:25