在声明阶段实现类与类成员注解的一种语法。
function log(target){ const desc = Object.getOwnPropertyDescriotors(target.prototype); for(const key of Object.keys(desc)){ if(key === ‘constructor‘){ continue; } const func = desc[key].value; if (‘function‘ === typeof func) { Object.defineProperties(target.prototype,key,{ value(...args){ console.log(‘before ‘ + key); const ret = func.apply(this,args); console.log(‘after ‘ + key); return ret; } }) } } } function readonly(target,key,descriptor){ descriptor.writable = false; } function validate(target,key,descriptor){ const func = descriptor.value; descriptor.value = function(...args){ for (let num of args) { if (‘number‘ !== typeof num) { throw new Error(`"${num}" is not a number`); } } return func.apply(this,args); } } @log class Numberic{ @readonly PI = 3.1415926; add(...nums){ return nums.reduce((p,n) => (p + n),0) } } // new Numberic().add(1,2); new Numberic().add(1,‘x‘);
和上一节报同样的错误。。。
mobx学习笔记03——mobx基础语法(decorator修饰器)
原文:https://www.cnblogs.com/superjishere/p/12091734.html