《JavaScript设计模式》学习日志
2016-02-24 00:38
465 查看
反模式的概念:
1.描述一种针对某个特定问题的不良解决方案,该方案会导致糟糕的情况发生;
2.描述如何摆脱前述的糟糕情况以及如何创造好的解决方案。
Javascript的反模式例子如下:
1. 在全局上面文中定义大量污染全局命令空间的变量
2.在调用setTimeout和setInterval时传递字符串(会用eval来执行)而不是函数。
3.修改Object的原型 (这是最糟糕的反模式)
4.使用内联Javascript
5.在本应使用document.createElement的地方使用document.write。
构造器(Constructor)模式:
1.对象创建
在JavaScript中,创建新对象的两种常用方法为:
i.
ii.
2.有四种方法可以将键值赋值给一个对象:
i. "点"语法
ii. 中括号语法
iii. Object.defineProperty
iv. Object.defineProperties
基本Constructor (构造器)
带原形的Constructor(构造器)
1.描述一种针对某个特定问题的不良解决方案,该方案会导致糟糕的情况发生;
2.描述如何摆脱前述的糟糕情况以及如何创造好的解决方案。
Javascript的反模式例子如下:
1. 在全局上面文中定义大量污染全局命令空间的变量
2.在调用setTimeout和setInterval时传递字符串(会用eval来执行)而不是函数。
3.修改Object的原型 (这是最糟糕的反模式)
4.使用内联Javascript
5.在本应使用document.createElement的地方使用document.write。
构造器(Constructor)模式:
1.对象创建
在JavaScript中,创建新对象的两种常用方法为:
i.
var newObject={};
ii.
var newObject=new Object(); //object构造器的简洁记法
2.有四种方法可以将键值赋值给一个对象:
i. "点"语法
newObject.someKey="Hello World"; //设置属性 var key=newObject.someKey; //获取属性
ii. 中括号语法
newObject["someKey"]="Hello World"; //设置属性 var key=newObject["someKey"]; //获取属性
iii. Object.defineProperty
//设置属性 Object.defineProperty(newObject,"someKey",{ value:"for more control of the property's behavior", writable:true, enumerable:true, configurable:true }) //如果上面的看着麻烦,可以使用下面的简便方式 var defineProp=function(obj,key,value) { config.value=value; Object.defineProperty(obj,key,config) ; }; //使用上述方式,先创建一个空的person对象 var person=Object.create(null); //然后设置各个属性 defineProp(person,"car","Delorean"); defineProp(person,"dateOfBirth","1981"); defineProp(person,"hasBeard",false);
iv. Object.defineProperties
//设置属性 Object.defineProperties(newObject,( "someKey":{ value:"Hello World", writable:true }, "anotherKey":{ value:"Foo bar", writable:false } ))
基本Constructor (构造器)
带原形的Constructor(构造器)
相关文章推荐
- js 数组扩展
- jsp中的请求转发之后必须加上return!否则还会向下执行!
- js 使用
- javascript时间戳和日期字符串相互转换
- oc 中 json 布尔值的判断
- js加密解密请求路径
- Javascript模块化编程的写法
- Javascript自学-7
- javaScript学习笔记(二)
- javascript创建并提交表单
- javascript中的闭包
- HTML5-CSS3-JavaScript(3)
- javascript对象
- 链接中javascript: void(0)的使用介绍
- DataContractJsonSerializer和JavaScriptSerializer
- JSP内置对象详解
- 【读书笔记】javascript语言精粹--第8章 方法
- 利用javascript实现从某年到当前年的下拉列表框
- js数组判断是否含有某一个元素
- js 传参报错 参数含有数字、字母组合的字符串SyntaxError: identifier starts immediately after numeric literal