对象最常见的用法是创建、设置、查找、删除、检测和枚举它的属性。
属性名可以是包含空字符串在内的任意字符串,但对象不能存在两个同名属性。
每个属性还有一些与之相关的值,称为属性特性:
可写:表明是否可以设置该属性的值
可枚举:表明是否可以通过for/in循环该属性
可配置:表明是否要以删除或修改该属性
除此之外,每个属性还拥有三个相关的对象特性
对象原型(prototype):指向另外一个对象,本对象的属性继承自它的原型对象
对象的类(class):标识对象类型的字符串。
对象的扩展标记(extensibale flag) 指明是否可以向该对象添加新属性(ecmascript)。
三类js对象和两类属性作区分:
内置对象:由ECMAScript规范定义的对象或类。例如,数组,函数,日期,正则表达式都是内置对象。
宿主对象:解释器所嵌入的宿主环境定义。如:表示页面结构的HTMLElement对象均是宿主对象。既然宿主环境定义的方法可以当成普通的javascript函数对象,那么宿主对象也可以当成内置对象。
自定义对象:由运行中的js创建的对象(user-defined-object)
继承属性:在对象的原型对象中定义的属性(own property)
自有属性:直接在对象中定义的属性(inheritedproperty)