ECAMScript中有两种属性:数据属性和访问器属性 1. 数据属性包含一个数据值的位置,有四个描述其属性的特性:[[Configurable]],[[Enumerable]],[[Writable]],[[Value]] 要修改这些属性的默认特性,必须使用ECMAScript5中的,Object.defineProperty()方法。这个方法接收三个参数:属性所在的对象,属性的名字,和一个描述符对象,其中,描述符对象的属性必须是:configurable,enumerable,writable和value,可以设置其中的一个或多个,修改属性对应的特性值。如果不指定,默认都为false。以字面量形式,设置对象的属性时,这些属性的特性默认都为true。一旦将configurable特性设置为false,就不能再设置为true了。 eg: var person = {}; Object.defineProperty(person,name,{ writable:false, value:’Nicholas’ }); 2. 访问器属性: ,有四个描述其属性的特性:[[Configurable]],[[Enumerable]],[[Get]],[[Set]] 访问器属性不能直接定义,必须使用Object.defineProperty(); eg: var book = { _year:2004, edition:1 } Object.defineProperty(book,’year’,{ get:function(){ return this._year; }, set:function(){ if(newValue > 2004){ this._year = newValue; this.edition += newValue -2004; } } }); book.year = 2005; console.log(book.edition); 定义多个属性: var book = {}; >Object.defineProperties(book,{ > _year:{value:2003}, > edition:{get:function(){}} >}) > var descriptor = Object.getOwnPropertyDescriptor(book,'_year'); >console.log(descriptor.value); > 读取属性的特性:Object.getOwnPropertyDescriptor()方法 在JavaScript中,可以针对任何对象—包括DOM和BOM对象,使用Object.getOwnPropertyDescriptor()方法。
(一)创建性设计模式
简单工厂模式(工厂函数/静态工厂方法)工厂方法模式(安全模式类)抽象工厂模式建造者模式(注重创建过程,工厂方法注重创建结果)原型模式单例模式(单体模式/惰性单体模式)未完成,待续……