首页 > 其他 > 详细

对象原型

时间:2020-07-07 23:38:13      阅读:71      评论:0      收藏:0      [点我收藏+]

对象

null和undefined没有对应的构造形式,它们只有文字形式。Date只有构造形式,没有文字形式。

数组:数组也是对象,所以虽然每个下标都是整数,但任然可以给数组添加属性;虽然添加了命名属性,数组的length值并未发生变化。

如果试图向数组添加一个属性,但是属性名“看起来”像一个数字,那它就会变成一个数值下标(因此会修改数组的内容而不是添加一个属性)。

不变性

  • 禁止扩展:Object.preventExtensions(obj)

禁止一个对象添加新属性并且保留已有属性。

  • 密封:Object.seal(obj)

不仅不能添加新属性,也不能重新配置或者删除任何现有属性(虽然可以修改属性的值)。

  • 冻结:Object.freeze(obj)

禁止对于对象本身及其任意直接属性的修改(对象引用的其他对象是不受影响的)。

深度冻结一个对象需递归遍历它引用的所有对象并在这些对象上调用Object.freeze(...)。

存在性 

in操作符会检查属性是否在对象及其[[prototype]]原型链中;hasOwnProperty()只会检查属性是否在当前对象中,不会检查[[prototype]]原型链。

propertyIsEnumerable()会检查给定的属性名是否直接存在于对象中(而不是在原型链上)并且满足enmuerable:true。

Object.keys()会返回一个数组,包含所有可枚举的属性。Object.getOwnPropertyNames()会返回一个数组,包含所有属性,无论它们是否可枚举。

Object.keys()和Object.getOwnPropertyNames()都只会查找对象直接包含的属性。

for in循环可以用来遍历对象的可枚举属性列表(包括[[prototype]]链),所以效率低。

混合对象“类”

 

未完待续...

 

对象原型

原文:https://www.cnblogs.com/zhenjianyu/p/13263497.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!