js中object的property系列,如何打造一个只读属性?
发布于 作者:苏南大叔 来源:程序如此灵动~

苏南大叔在本文中,将描述一个非常微观层面的概念,就是object
的property
相关编程。对,针对的是property
,并不是说怎么使用它,而是说对它进行定义。对于大多数js
编程爱好者来说,这种操作似乎是非常不常见的。作为代码的搬运工,大家一般不关心这些object
是怎么产生的。

那么,苏南大叔为啥还要描述这样小众的问题呢?因为,如果您想深入了解react
和vue
们,在底层层面上,都是怎么运作的话,就需要弄明白,object
的property
是怎么来的。
本文测试环境:chrome@86.0.4240.75
。主要目标是创建一个只读的object
的property
。
基本例子
下面的代码,来自于msdn
官方范例。展示的是object
的property
中的writeable
和value
。意思就是,控制某个对象的某个属性,是否可写。writable
默认值为true
,可以写入。
默认情况下,是可以直接对属性进行赋值操作的,这个大家应该是非常熟悉的。
这里会先输出10
,再输出11
。

属性只读
注意:只读属性writable
中的write
没有字母e
。writable
默认值是true
,就是说可以写入数值。
但是,增加了writable
参数控制之后,这个值就变成了不可写的。当然,这里的试图写入的操作,也是没有生效的。
这里的输出值是:undefined
,10
,10
。也就是说:赋值成11
的操作,并没有成功。

如果在严格模式下,上述对只读属性赋值的行为,还会报错。

报错信息如下:
相关链接
- https://newsn.net/say/js-use-strict.html
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
总结
本文中,只是探讨了object
的property
定义的可能性,并没有进入深入探究,欢迎大家参考苏南大叔的后续系列文章。


