Object.defineProperty
2018-11-29 本文已影响14人
仰望天空的人
最近常规做一个消息滚动时 循环里if判断盒子 show hide状态,居然不能实时触发,这才想到这个属性,没什么注解的,先码着
VueJS:采用 Object.defineProperty()
方法,监控对数据的操作,从而可以自动触发数据同步。并且,由于是在不同的数据上触发同步,可以精确的将变更发送给绑定的视图,而不是对所有的数据都执行一次检测。(angular采用的脏值检测,数据发生变更后,对于所有的数据和视图的绑定关系进行一次检测,相比之下,emmm)
基本用法
var a = {};
Object.defineProperty(a, 'b', {
value: 123
});
console.log(a.b); // 123
很简单,它接受三个参数,而且都是必填的。
参数介绍:
- 第一个参数:目标对象
- 第二个参数:需要定义的属性或方法的名字。
- 第三个参数:目标属性所拥有的特性。
前两个参数不多说了,一看代码就懂,主要看第三个参数,看看有哪些取值。
-
value
:属性的值。 -
writable
:如果为false
,属性的值就不能被重写,只能为只读了。 -
configurable
:总开关,一旦为false
,就不能再设置他的(value
,writable
,configurable
)。 -
enumerable
:是否能在for...in
循环中遍历出来或在Object.keys
中列举出来。 -
get
:。 -
set
:。