第六章 面向对象的程序设计
6.1 理解对象
6.1.1 属性类型
ECMAScript中有两种属性:数据属性和访问器属性
1.数据属性
- Configurable:能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。
- Enumerable:表示能否通过for-in循环返回属性
- Writable:表示能否修改属性的值。
- Value:包含这个属性的数据值
var person = {};
Object.defineProperty(person,"name",{
writable:false;
value:"Nicholas";
});
person.name = "Greg";
alert(person.name);//"Nicholas"
2.访问器属性
getter
setter
6.1.2 定义多个属性
6.1.3 读取属性特性
用Object构造函数或对象在字面量创建单个对象有个明显的缺点:使用同一个借口创建很多对象,会产生大量的重复代码。人们开始使用工厂模式的一种变体。
6.2.1 工厂模式
工厂模式抽象了创建具体对象的过程。
考虑到在ECMAScript中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节。
function createPerson(name,age,job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.name);
}
return o;
}
var person1 = creatPerson("Greg",27,"Doctor");
var person2 = creatPerson("Nicholas",29,"SE");
工厂模式虽然解决了创建多个相似对象的问题,但没有解决对象识别问题
6.2.2 构造函数模式
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.sayName = function(){
alert(