关于对象和属性的特性

   又有个细节让我迷糊了一会儿。属性的特性里只有 writable,configurable,value,enumerable(对于数据而言),看到可扩展/不可扩展的时候就有点蒙了,也没看到extendable一类的特性啊。然后才发现可扩展性是针对对象,而不是属性的。

另外如果configurable是false,仍然可以把writable从true设置到false(但是不能再设置成true)。←隔几个月回头再看到这个点的时候,还是会觉得怪怪的。哎。

  还有关于Object.getOwnPropertyNames和Object.keys的区别,查了一下,它们同样都能返回本对象自有的属性--不包括原型链上的属性。然而不同在于前者能返回不可枚举的属性,而后者不可以,测试了一下,也确实如此。在测试中我也发现,getOwnPropertyDescriptor所返回的用来描述属性的对象,似乎是新生成的一个对象。它并不是在动态地关联原属性,换句话说,修改这个对象并不能影响原属性的特性。想修改还是得用Object.defineProperty啊。←不过这某种意义上也挺方便的,想搞个什么深拷贝去复制属性特性的话就不用递归来复制这个Descriptor了。

 

posted @ 2017-02-26 01:38  洛尔卡  阅读(136)  评论(0编辑  收藏  举报