class Test{
constructor(name) {
// 实例属性
this.name = name
}
// 实例属性
type = "test"
// 实例方法
sayName = () => {
console.log(`say name: ${this.name}, type: ${this.type}`)
}
// 原型方法
sayHello() {
console.log('hello!')
}
// 类的方法
static eat() {
console.log('I can eat something!')
}
}
const test = new Test('test')
console.log(Object.keys(test)) // ['type', 'sayName', 'name']
console.log(test.hasOwnProperty('eat')) // false
console.log(test.hasOwnProperty('sayHello')) // false
console.log(Test.hasOwnProperty('eat')) // true
console.log(Test.prototype.hasOwnProperty('sayHello')) // true
(1)不在constructor里、通过赋值形式定义的属性也属于实例属性
(2) 静态方法在构造函数上