静态成员是直接通过类对象访问的

  1. var Book=(function(){
  2. var numOfBooks=0;
  3. function checkIsbn(isbn){
  4. ...
  5. }
  6. return function(newIsbn,newTitle,newAuthor){
  7. var isbn,title,author;
  8. this.getIsbn=function(){
  9. return isbn;
  10. };
  11. this.setIsbn=function(newIsbn){
  12. if(!checkIsbn(newIsbn)) throw new Error('ISBN不合法');
  13. isbn=newIsbn;
  14. };
  15. this.getTitle=function(){
  16. return title;
  17. };
  18. this.setTitle=function(newTitle){
  19. title=newTitle||'无标题';
  20. };
  21. this.getAuthor=function(){
  22. return author;
  23. };
  24. this.setAuthor=function(newAuthor){
  25. author=newAuthor||'无作者';
  26. };
  27. numOfBooks++;
  28. if(numOfBooks>50) throw new Error('只能创建50个实例');
  29. this.setIsbn(newIsbn);
  30. this.setTitle(newTitle);
  31. this.setAuthor(newAuthor);
  32.  
  33. }
  34. })();
  35. Book.convertToTitleCase=function(inputString){
  36. ...
  37. };
  38. Book.prototype={
  39. display:function(){
  40. ...
  41. }
  42. };

静态特权方法(模仿常量)

  1. //Class.getUPPER_BOUND();
  2. var Class=(function(){
  3. var UPPER_BOUND=100;
  4. var ctor=function(constructorArgument){
  5. ...
  6. };
  7. ctor.getUPPER_BOUND=function(){
  8. return UPPER_BOUND;
  9. };
  10. ...
  11. return ctor;
  12. })();

通用的取值器方法

  1. //Class.getConstant('UPPER_BOUND');
  2. var Class=(function(){
  3. var constants={
  4. UPPER_BOUND:100,
  5. LOWER_BOUND:-100
  6. };
  7. var ctor=function(constructorArgument){
  8. ...
  9. };
  10. ctor.getConstant=function(name){
  11. return constants[name];
  12. };
  13. ...
  14. return ctor;
  15. })();

原型链

  1. function Author(name,books){
  2. Person.call(this,name);
  3. this.books=books;
  4. }
  5. Author.prototype=new Person();
  6. Author.prototype.constructor=Author;
  7. Author.prototype.getBooks = function() {
  8. return this.books;
  9. };

javascript设计模式4的更多相关文章

  1. 《JavaScript设计模式 张》整理

    最近在研读另外一本关于设计模式的书<JavaScript设计模式>,这本书中描述了更多的设计模式. 一.创建型设计模式 包括简单工厂.工厂方法.抽象工厂.建造者.原型和单例模式. 1)简单 ...

  2. 《JavaScript设计模式与开发实践》整理

    最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...

  3. Javascript设计模式学习一

    学习Javascript设计模式之前,需要先了解一些相关知识,面向对象的基础知识.this等重要概念,以及掌握一些函数式编程的技巧. Js多态 多态的思想:实际上是把“做什么”和“谁去做”分离开来.例 ...

  4. javascript设计模式实践之职责链--具有百叶窗切换图片效果的JQuery插件(三)

    在上一篇<javascript设计模式实践之模板方法--具有百叶窗切换图片效果的JQuery插件(二)>里,通过采用模板方法模式完成了切换效果对象的构建编写. 接下来就是完成各效果对象的调 ...

  5. javascript设计模式实践之模板方法--具有百叶窗切换图片效果的JQuery插件(二)

    在上一篇<javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)>里,通过采用迭代器模式完成了各初始化函数的定义和调用. 接下来就要完成各个切换效果的编 ...

  6. javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)

    类似于幻灯片的切换效果,有时需要在网页中完成一些图片的自动切换效果,比如广告,宣传,产品介绍之类的,那么单纯的切就没意思了,需要在切换的时候通过一些效果使得切换生动些. 比较常用之一的就是窗帘切换了. ...

  7. 常用的Javascript设计模式

    <parctical common lisp>的作者曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通用的解决方案. 不管是弱类型 ...

  8. Javascript设计模式(摘译)

    说明: 未完成...更新中.... 一.javascipt设计模式分类 设计模式分类有很多标准,最流行的三种如下 1)  creational  --  主要关注对象创建 Creational des ...

  9. JavaScript设计模式学习笔记

    1 JavaScript设计模式深入分析 私有属性和方法:函数有作用域,在函数内用var 关键字声明的变量在外部无法访问,私有属性和方法本质就是你希望在对象外部无法访问的变量. 特权属性和方法:创建属 ...

  10. JavaScript设计模式:读书笔记(未完)

    该篇随我读书的进度持续更新阅读书目:<JavaScript设计模式> 2016/3/30 2016/3/31 2016/4/8 2016/3/30: 模式是一种可复用的解决方案,可用于解决 ...

随机推荐

  1. The 11th Zhejiang Provincial Collegiate Programming Contest->Problem G:G - Ternary Calculation

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3782 题意:把输入的三元运算用计算机运算出来. ;          ci ...

  2. AxureRP制作Tab标签

    1.添加动态Panel 2.双击进入编辑动态Panel 3.点击一个面板状态,编辑全部状态 4.选择虚线框,画出两个矩形图,一大一小:

  3. python读写配置文件

    #coding:utf-8 import ConfigParser class Conf(): def __init__(self,name): self.name = name self.cp = ...

  4. 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】07-基本数据类型

    C语言有丰富的数据类型,因此它很适合用来编写数据库,如DB2.Oracle等大型数据库都是C语言写的.其中,提供了4种最常用的基本数据类型:char.int.float.double,使用这些数据类型 ...

  5. Java Web开发 之小张老师总结EL、JSP、Servlet变量

    EL 11 JSP 9 Servlet JSP类别 pageContext pageContext * 作用域 pageScope pageContext.getAttribute() * reque ...

  6. orm框架的学习mybatis

    1.数据库中的每张表,对应代码 中一个pojo类. 2.or映射是在mapper.xml文件中,指定resultType.可以指定已经定义的pojo类. 3.可以利用paramaterType指定sq ...

  7. uva 11817 - Tunnelling the Earth

    题意:从地球上的一个点到另一个点,求两点的球面距离和直线距离之差.假定地球是正球体,半径为6371009米. #include<iostream> #include<cmath> ...

  8. caffe简易上手指南(三)—— 使用模型进行fine tune

    之前的教程我们说了如何使用caffe训练自己的模型,下面我们来说一下如何fine tune. 所谓fine tune就是用别人训练好的模型,加上我们自己的数据,来训练新的模型.fine tune相当于 ...

  9. 【转】Picasso – Android系统的图片下载和缓存类库

    来源:http://blog.chengyunfeng.com/?p=492 另一篇参考:http://blog.csdn.net/xu_fu/article/details/17043231 Pic ...

  10. hadoop博客 oschina

    http://my.oschina.net/Xiao629/blog?catalog=449279