JavaScript设计模式总结

来源:互联网 发布:都有哪些美食kol 知乎 编辑:程序博客网 时间:2024/06/07 08:44

面向对象


  1. 什么是面向对象的程序
  2. 面向对象的三大特点:封装,继承,多态(抽象,继承,重用)
  3. 避免全局变量的创建
  4. 函数式编程、类式编程(面向对象编程)
  5. 私有属性,私有方法,公有属性,公有方法,保护方法,特权方法,类的静态公有属性,类的静态公有方法,公有属性,公有方法,构造函数
  6. 闭包
  7. 封装
  8. 继承(声明式继承,构造器继承)
  9. 类,对象,实例概念理解和它们之间的区别

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()方法。

JavaScript设计模式

(一)创建性设计模式

  1. 简单工厂模式(工厂函数/静态工厂方法)
  2. 工厂方法模式(安全模式类)
  3. 抽象工厂模式
  4. 建造者模式(注重创建过程,工厂方法注重创建结果)
  5. 原型模式
  6. 单例模式(单体模式/惰性单体模式)

未完成,待续……

原创粉丝点击