《Javascript设计模式》笔记一js的表现力
用不同方法完成同样一个任务:启动和停止动画。
1.过程式的程序设计:
function startAnimation(){
...
}
function stopAnimation(){
...
}
缺点:无法创建可以保存状态,并且进行一些内部操作的方法,所以2.创建对象的方法如下:
var Anim = function(){
...
}
Anim.prototype.start = function(){
...
}
Anim.prototype.stop = function(){
...
}
var myAnim = new Anim();
myAnim.start();
myAnim.stop();
3.当然也可以把上面类的定义封装在一条声明当中,如下:
var Anim = function(){
...
}
Anim.prototype = {
start:function(){},
stop:function(){}
}
上面的是大多数屌丝程序员常用的方法,4.下面是逼格更高的写法:
Function.prototype.method = function(name,fn){
this.prototype[name] = fn;
}
var Anim = function(){
...
}
Anim.method('start',function(){
...
});
Anim.method('stop',function(){
...
});
说明:Function.prototype.method用于为类添加新方法,2个参数(方法名,新的方法)
5.当然也可以继续更改Function.prototype.method,使其可以被链调用,只要让他返回this即可
Function.prototype.method = function(name.fn){
this.prototype[name] = fn;
return this;
};
var Anim = function(){
};
Anim.
method('start',function(){
...
}).
method('stop',function(){
...
});
以上5种方法,均可以完成同一项任务。
==========
函数的特性:
1.可以存储在变量当中
2.可以作为参数传给其他函数
3.可以作为返回值从其他函数传出
4.可以在运行时进行构造
匿名函数实例:
(function(){
var foo = 10;
var bar = 2;
alert(foo*bar);
})();
//被定义后立即执行,函数最后一对括号立即对函数进行调用,括号中没有参数。
(function(foo,bar){
alert(foo*bar);
})(10,2);
//变量做为参数传递进去
var baz = (function(){
return foo*bar;//返回值赋给变量baz
})(10,2);
函数有一个用途就是创建闭包。
1.Javascript有函数级作用域,定义在函数内部的变量不能再外部被调用。
2.函数运行在定义它的作用域中,而不是在调用它的作用域中。
var baz;
(function(){
var foo = 10;
var bar = 2;
baz = function(){
return foo*bar;
}
})();
baz();
《Javascript设计模式》笔记一js的表现力的更多相关文章
- Javascript设计模式笔记
Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpr ...
- Javascript 设计模式笔记
设计模式太多了 还有些模式概念非常接近(比如观察者 中介者 和 事件发布/订阅模式) 构造器模式 var newObject = {} var newObject = new XXX(); 模块模式 ...
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
- javaScript设计模式之面向对象编程(object-oriented programming,OOP)(二)
接上一篇 面向对象编程的理解? 答:面向对象编程,就是将你的需求抽象成一个对象,然后针对这个对象分析其特征(属性)与动作(方法).这个对象我们称之为类.面向对象编程思想其中一个特点就是封装,就是把你需 ...
- JavaScript基础笔记集合(转)
JavaScript基础笔记集合 JavaScript基础笔记集合 js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译 js存放的位置 html脚本必须放在&l ...
- 再起航,我的学习笔记之JavaScript设计模式01
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 在通 ...
- 再起航,我的学习笔记之JavaScript设计模式03
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 上一 ...
- 再起航,我的学习笔记之JavaScript设计模式05(简单工程模式)
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...
- 再起航,我的学习笔记之JavaScript设计模式05(简单工厂模式)
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...
随机推荐
- ftp协议详解
客户端与服务器之间,需要多条连接才能完成应用的协议,属于复杂协议.如FTP,PPTP,H.323和SIP均属于复杂协议. 这里主要介绍ftp协议的工作原理.首先,ftp通信协议有两种工作模式,被动模式 ...
- 每天一点Android干货-Activity的生命周期
Activity Activity是这样一个程序组件,它为用户提供一个用于任务交互的画面. 一个应用程序通常由多个activity组成,它们彼此保持弱的绑定状态.典型的,当一个activity在一个应 ...
- jmx配置
# ----- Execute The Requested Command ----------------------------------------- # ----- JMX Config S ...
- location对象说明
在浏览器的console层输入 location 即可输出该对象的相关信息 location.protocol 协议类型 http/https location.hostname 主机名 loc ...
- Git使用教程【转】
Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是 ...
- thinkphp相关总结
1.model层验证多个字段唯一性 protected $_validate = array( array('appid,awardid', '', '不能重复添加', self::MUST_VALI ...
- Apache开启状态查看页面(原创贴-转载请注明出处)
=================写在前面的话================== 场景描述:有时候我们需要查看apache的运行状态,只需要开启apache的status功能就可以实现,但是stat ...
- JS动态添加option和删除option
1.动态创建select function createSelect(){ var mySelect = document.createElement("select"); ...
- C++多线程の线程通信future,promise,async
- boost学习笔记(七)---date_time库
date_time库的日期基于格里高利历,支持从1400-01-01到9999-12-31之间的日期计算 #define BOOST_DATE_TIME_SOURCE #include <boo ...