《6》面向对象的程序设计
对象:无序属性的集合,可以包含基本值,对象,函数。
6.1.1 属性类型
内部才有的特性,描述了属性的特征,分为:数据属性和访问器属性
1、数据属性:
-
- configurable
- Enumberable
- Writable
- Value
var person = {}; Object.defineProperty(person, 'name',{ writable: true, value: 'huilin' });
Tips: 1、configurable设置成false后,就不能重新设置成true,会导致报错
2、用Object.defineProperty 去定义属性,如果不指定configurable、enumberable、writable ,默认都是false,一般情况下不会使用这个。
2、访问器属性
-
- configurable
- Enumberable
- get
- set
用于:设置一个属性导致另一个属性的变化
var book= { _year: 2004, edit: 1 }; Object.defineProperty(book, 'year', { get: function() { return this._year }, set: function(newValue) { if(newValue > 2004) { this._year = newValue; this.edit += newValue - 2004; } } });
3、读取属性的特性
Object.getOwnPropertyDescriptor(对象,对象里面的属性名)
var person = {}; Object.defineProperties(person, { _year: { value: 2 } }); var descriptor = Object.getOwnPropertyDescriptor(person, '_year'); descriptor.value // 2
二、创建对象
(一)工厂模式
function createPerson() { var o = new Object(); // 因为这里面用了new,则没法解决对象识别的问题 o.name = 'shabi'; o.sayName = function() { alert(this.name); } }
(二)构造函数模式

浙公网安备 33010602011771号