NOTE
基本概念
1、对象除了可以保持自有的属性,还可以从一个称为原型的对象继承属性(原型式继承是JavaScrpit的核心特征)
对象是动态的,可以增加或删除属性
2、字符串、数值、true、false、null、undefined不是对象
3、对象的属性特征:
①可写(writable attribute),表明是否可以设置属性的值
②可枚举(enumerable attribute),表明是否可以通过for/in结构返回该属性
③可配置(configurable attribute),表明是否可以删除或修改该属性
4、Object()表示构造函数
5、对象加了括号是调用,没加括号是引用
6、属性分为:自有属性和继承属性
创建对象
1、创建对象的方法:对象字面量、通过new创建对象、原型
2、通过new创建对象:通过new调用构造函数来创建并初始化一个新对象(内置构造函数有:Object(),Array(),Date()等)
原型
所有通过对象字面量创建的对象都具有同一个原型对象。
通过Object.prototype获得原型对象的引用。
通过new和构造函数创建的对象的原型就是构造函数的prototype属性引用的对象。
如:new Array()对象的原型就是Array.prototype。
极少对象没有原型。
如:Object.prototype,它不继承任何属性
属性相关
查询一个不存在的属性并不会报错,会返回undefined,但是,如果对象不存在,那么试图查询这个不存在的对象的属性就会报错null和undefined值都没有属性,因此查询这些值的属性会报错。
属性getter和setter
由getter和setter定义的属性称做存取器属性
当程序查询存取器属性的值时,JavaScript调用getter方法(无参数)
当程序设置一个存取器属性的值时,JavaScript调用setter方法,将赋值表达式右侧的值当做参数传入setter。
和数据属性一样,存取器属性是可以继承的。