用不同方法完成同样一个任务:启动和停止动画。

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的表现力的更多相关文章

  1. Javascript设计模式笔记

    Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpr ...

  2. Javascript 设计模式笔记

    设计模式太多了 还有些模式概念非常接近(比如观察者 中介者 和 事件发布/订阅模式) 构造器模式 var newObject = {} var newObject = new XXX(); 模块模式 ...

  3. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  4. javaScript设计模式之面向对象编程(object-oriented programming,OOP)(二)

    接上一篇 面向对象编程的理解? 答:面向对象编程,就是将你的需求抽象成一个对象,然后针对这个对象分析其特征(属性)与动作(方法).这个对象我们称之为类.面向对象编程思想其中一个特点就是封装,就是把你需 ...

  5. JavaScript基础笔记集合(转)

    JavaScript基础笔记集合   JavaScript基础笔记集合   js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译   js存放的位置 html脚本必须放在&l ...

  6. 再起航,我的学习笔记之JavaScript设计模式01

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 在通 ...

  7. 再起航,我的学习笔记之JavaScript设计模式03

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 上一 ...

  8. 再起航,我的学习笔记之JavaScript设计模式05(简单工程模式)

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...

  9. 再起航,我的学习笔记之JavaScript设计模式05(简单工厂模式)

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...

随机推荐

  1. [linux系统]--crontab定时任务

    基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...

  2. ftp协议详解

    客户端与服务器之间,需要多条连接才能完成应用的协议,属于复杂协议.如FTP,PPTP,H.323和SIP均属于复杂协议. 这里主要介绍ftp协议的工作原理.首先,ftp通信协议有两种工作模式,被动模式 ...

  3. 《编写可维护的JavaScript》——JavaScript编码规范(四)

    注释 单行注释 单行注释以两个斜线开始,以行尾结束 单行注释有三种使用方法: 独占一行的注释,用来解释下一行代码.这行注释前总是有一个空行,且缩进层级和下一行代码保持一致. 在行尾的注释.代码结束到注 ...

  4. android 触摸事件分析

    背景知识: 触摸屏可以有多个触控点 android中管理触控点通过一个数组来管理,涉及到index和id两个变量, index表示在数组中的下标,id表示这个触控点(pointer)的id,point ...

  5. html5本地存储(localStorage)使用介绍

    1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(application cache) indexedDB 和 webSQ ...

  6. Arduino入门笔记【1】

    刚刚接触这个东西只知道这是类似于单片机的开发板,可以做一些单片机实现或者不能实现的东西,但是比单片机要简单得多. Arduino到底是什么? 维基百科上的描述是:Arduino是一块开发板的微控制器和 ...

  7. VS2015 使用 Web Deploy 发布网站到 WindowsServer2008 R2服务器详解

    使用原因:由于开发期间需要将开发出的网站随时提交到服务器以便公司高层随时访问所以要求将开发出的网站每天发布到服务器,频繁度比较高,因此不能再使用之前的方式(发布到本地后再拷贝文件到服务器),所以想到了 ...

  8. DP4J -- mnist

    标签(空格分隔): DeepLearning mnist mnist是一个数据集,其中包含很多手写数字的图片,每张图片都已经打上了label: Deep Learning 传统的机器学习神经网络由一层 ...

  9. set集合(set是一个无序且不重复的元素集合)

    功能: 一.可以去掉列表,元组中的重复项 二.可以求交集,合集,差集等 def add(self, *args, **kwargs): """ 添加 "&quo ...

  10. js 睡觉

    js睡觉 function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMilli ...