为什么班上没有吸气剂钥匙?

时间:2019-11-06 07:13:47

标签: javascript

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具有服务属性,但没有。

1 个答案:

答案 0 :(得分:2)

就像直接在class内部定义的任何方法一样,它是 prototype 的属性,而不是对象本身的属性。检查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 own属性-当访问class3Instance.service时,解释器会在以下对象的内部原型中找到该属性名称: class3Instance,而不是class3Instance本身。