也许有人对这个比较陌生,什么是数据属性/访问器属性?,它是干啥的?,客官往里走,里面都有:
在ECMAscript中有两种属性:数据属性 And 访问器属性
数据属性: 规定一个 obj 中属性的特性,就是行为,这个属性能干什么,不能干什么? 来了
value:设置属性值,默认值为 undefined。
writable:设置属性值是否可写,默认值为 true。
enumerable:设置属性是否可枚举,即是否允许使用 for/in 语句或 Object.keys() 函数遍历访问,默认为 true。
configurable:设置是否可配置属性特性,默认为 true。如果为 false,将无法删除该属性,不能够修改属性值,也不能修改属性的属性描述符。
但是这里注意:如果属性描述符有 writable 或 configurable 有一个为 true,则 value 也允许修改。
总结:数据属性 就是对指定属性做出控制 能否:修改 枚举 删除 value是什么
访问器属性: 一个对象有多个属性,当你访问此对象的某个属性时,期间发生了什么从开始到结束
这里说一下 configurable 和 enumerable 也是访问器属性,上面以做出解释,这里就不写了,主要是以下两个
get:取值 getter 函数,默认为 undefined,当访问该属性时,会调用此函数,执行时不传入任何参数,但是会传入this对象(由于继承关系,这里的this并不一定是定义该属性的对象)。该函数的返回值会被用作属性的值。
set:属性的 setter 函数,如果没有 setter,则为 undefined。当属性值被修改时,会调用此函数。该方法接受一个参数(也就是被赋予的新值),会传入赋值时的 this 对象。
以上就是对数据描述符的相关介绍及使用展示,主要还是get 和 set 两个访问器属性,因为可以实现 模拟 vue中的 v-model 做数据双向绑定,对观看 vue 响应式数据原理 的源码部分有帮助呦! 还有那句话:如有不对之处及不周之处请大佬们指出,也希望对一些人有所帮助,咱们下次再会!