@decortator
class A {}
// 等同于
class A {}
A = decorator(A) || A
// minxins.js
export function mixins(...list) {
return function (target) {
Object.assign(targe.prototype, ...list)
}
}
// main.js
import { mixins } from './mixins'
const Foo = {
foo () { console.log('foo') }
}
@mixins(Foo)
class MyClass {}
let obj = new MyClass()
obj.foo() // 'foo'
class Person {
@readonly
name() { return `${this.first} ${this.last}`
}
其中装饰器 readonly 用来修饰”类“的name方法。此时装饰器一共可以接受3个参数,第一个是所要装饰的目标对象,第二个参数是修饰的属性名,第三个是属性的描述对象。
function readonly(target, name, descriptor){
descriptor.writable = false
return descriptor
}