属性的删除、检测和枚举
删除属性
delete
运算符可用于删除对象属性,需要注意的是,delete
只是断开属性和宿主对象的联系,而不会去操作属性中的属性。
delete
运算符只能删除自有属性,不能删除继承属性。
delete
运算符删除成功或没有任何副作用(比如删除不存在的属性)时返回true
:
delete
不能删除可配置性为 false
的属性(比如通过变量声明和函数声明创建的全局对象的属性):
检测属性
判断属性属性是否存在与对象中:
- in:可用于检测自有属性和继承属性
- hasOwnProperty():用于检测自有属性
- propertyIsEnumerable():只有检测到是自有属性且属性是可枚举时才返回
true
枚举属性
注意,我们需要通过关联数组的方式获取对象属性值。
ECMAScript 5 定义了两个用以枚举属性名称的函数,第一个是 Object.keys()
函数,它返回对象中所有可枚举的自有属性的名称数组,第二个是 Object.getOwnPropertyNames()
函数,它返回对象中所有自有属性的名称,而不仅仅是可枚举的属性。
No Comments