1.ECMAScript-262中的对象
无序属性的集合,其属性可以包含基本值、对象、或者函数
2.属性类型
2.1数据属性:包含一个数据值的位置,在这个位置可以写入或者读取值
特性:
1)Configurable:表示能否通过delete删除属性重新定义属性,能否把属性修改为访问器属性,默认为true;
2)Enumberable:表示能否用for-in循环返回属性,默认为true
3)Writable:表示能否修改属性的值,默认为true
4)Value:包含属性的数据值,默认为undefined
2.2访问属性
不包含数据值,包含一对getter和setter函数
特性:
1)Configurable:表示能否通过delete删除属性重新定义属性,能否把属性修改为访问器属性,默认为true;
2)Enumberable:表示能否用for-in循环返回属性,默认为true
3)Get:在读取属性时调用,默认undefined
4)Set:在设置属性的时调用,默认为undefined
3.创建对象的几种方式
3.1工厂模式
用函数来封装以特定接口创建对象,在函数内创建一个Object对象,在对象上添加传入的属性,然后将这个对象返回出去
3.2构造函数模式
构造函数也是函数,虽然习惯上要将函数名首字母大写,主要是为了区别普通函数。构造函数与普通函数的最大区别在于创建时必须使用new,如果不使用new操作符根普通函数没有区别,在使用new操作符时会经历以下步骤:
1)创建一个新对象 2)将构造函数的作用域赋给新对象 3)执行构造函数中的代码 4)返回新对象
3.3原型模式
创建的每一个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,用途是包含可以由特定类型实例共享的属性和方法,原型的属性constructor指向构造函数
3.4使用字面量
3.5组合使用原型和构造函数
将实例的特有的属性定义在构造函数中,将实例的方法和共享属性定义在原型上
3.6动态原型模式
通过检查某个应该存放的方法是否有效,来决定是否需要初始化原型
3.7寄生构造函数模式
创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后返回新创建对象,与工程模式的区别,工厂模式之间调用函数创建对象,而寄生构造函数则需要使用new操作符
3.8稳妥构造函数
所谓稳妥对象,指没有公共属性,其方法也不引用this的对象
稳妥构造函数与寄生构造函数基本相似,主要有两点不同:
创建对象的实例不用this,不用new操作符调用构造函数