首页 > 其他 > 详细

mobx学习笔记03——mobx基础语法(decorator修饰器)

时间:2019-12-24 15:58:45      阅读:101      评论:0      收藏:0      [点我收藏+]

在声明阶段实现类与类成员注解的一种语法。

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!