JavaScript设计模式总结
来源:互联网 发布:都有哪些美食kol 知乎 编辑:程序博客网 时间:2024/06/07 08:44
面向对象
- 什么是面向对象的程序
- 面向对象的三大特点:封装,继承,多态(抽象,继承,重用)
- 避免全局变量的创建
- 函数式编程、类式编程(面向对象编程)
- 私有属性,私有方法,公有属性,公有方法,保护方法,特权方法,类的静态公有属性,类的静态公有方法,公有属性,公有方法,构造函数
- 闭包
- 封装
- 继承(声明式继承,构造器继承)
- 类,对象,实例概念理解和它们之间的区别
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设计模式
(一)创建性设计模式
- 简单工厂模式(工厂函数/静态工厂方法)
- 工厂方法模式(安全模式类)
- 抽象工厂模式
- 建造者模式(注重创建过程,工厂方法注重创建结果)
- 原型模式
- 单例模式(单体模式/惰性单体模式)
未完成,待续……
- JavaScript设计模式总结
- JavaScript的学习--JavaScript设计模式的总结
- 【javascript】javascript设计模式
- 前端学习总结(十四)javascript设计模式
- 设计模式 ----- 设计模式总结
- Javascript设计模式(译)
- Javascript 设计模式
- JavaScript 事件设计模式
- 《JavaScript设计模式》第一章
- Javascript事件设计模式
- JavaScript设计模式
- Javascript 设计模式 - Singleton
- JavaScript设计模式
- JavaScript 设计模式
- javascript 设计模式
- javascript设计模式
- javascript 设计模式
- JavaScript设计模式
- echarts 市级地图注意事项
- (37)接口实现和覆盖时的异常特点
- [平衡树]Tree(BST) + Heap = Treap
- CSS 控制单行文本和多行文本的显示区域不够存放时使用省略号...来替代的做法
- 无根树任意根深度加强版
- JavaScript设计模式总结
- JAVA 生产者与消费者模式
- git 命令大全
- vb.net 教程 4-2 目录操作 DirectoryInfo 5
- 接口与抽象的区别
- 在Ubuntu系统下装Win7并引导双系统,重装windows后修复grub2引导
- 微信注册筛选技术 快速微信开通过滤器
- 一台服务器安装多个zookeeper服务
- C++动态绑定