注册账号登录
关注

装饰符的深入了解

技术Javascript创建于2019/12/19140次阅读
Object.defineProperty(obj,prop,descriptor)

obj : 要在其上定义属性的对象
prop : 要定义或修改的属性的名称
descriptor : 将被定义或修改的属性描述符
返回值 :被传递给函数的对象

descriptor又分为两种
1.数据描述符:是一个具有值的属性,该值可能是可写的,也可能不是可写的
2.存取描述符:是又getter-setter 函数对描述的属性

descriptor的对象取值
1.configurable:仅当该属性为true时,该属性描述符才能够被改变,同时该属性也能从对应的对象上被删除,默认为false
2.enumerable:定义了对象的属性是否可以再for...in 循环和Object.keys()中被枚举,默认为false
3.value:该属性对应的值,可以时任何邮箱的javascript值(数值,对象,函数)。默认为undefined
4.writable:当且仅当该属性的值为true时,value才能被赋值运算符改变。默认为false
5.get :一个给属性提供getter的方法,如果没有getter则为undefined。该方法返回值被用作属性值。默认为undefined
6.set:一个个属性提供setter的方法,如果没有setter则为undefined。该方法将接受唯一参数,并将该参数的新值分配给该属性。默认为undefined

注意:如果一个描述符不具有value,writable,get和set任意一个关键字,那么它将被认为时一个数据描述符。如果一个描述符同时又value和writable和get或set关键词,将会产生一个异常

注意:装饰器时编译时起作用的功能

注意:装饰器只能用于类和类的方法,不能用于函数,因为存在函数提升,如果一定要装饰函数,可以采用高阶函数的形式直接执行

暂无评论
xiaokyo
关注私信
2
关注
5
粉丝
21
帖子