GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - jayli/javascript-patterns

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

9 Commits
9 Commits

Folders and files

NameName
Last commit message
Last commit date
Figure
Figure
 
 
README.markdown
README.markdown
 
 
README.md
README.md
 
 
chapter1.markdown
chapter1.markdown
 
 
chapter2.markdown
chapter2.markdown
 
 
chapter3.markdown
chapter3.markdown
 
 
chapter4.markdown
chapter4.markdown
 
 
chapter5.markdown
chapter5.markdown
 
 
chapter6.markdown
chapter6.markdown
 
 
chapter7.markdown
chapter7.markdown
 
 
chapter8.markdown
chapter8.markdown
 
 

Repository files navigation

JavaScript Patterns

JavaScript.patterns

“JavaScript patterns”中译本 - 《JavaScript 模式》

  • 作者:Stoyan Stefanov
  • 翻译:拔赤、goddyzhao、TooBug

偷懒是程序员的优良品质,模式则是先人们总结的偷懒招式。Stoyan Stefanov 的这本书,从 JavaScript 的实际使用场景出发,提炼了不少可以让前端们偷懒的实用招式。模式的探索、创新,将永远是程序员自我提升的一条修炼之道。值得一读。

目录

第一章 概述

  • 模式
  • JavaScript:概念
    • 面向对象
    • 无类
    • 原型
    • 运行环境
  • ECMAScript 5
  • JSLint
  • 控制台工具

第二章 高质量JavaScript基本要点

  • 编写可维护的代码
  • 减少全局对象
    • 全局对象带来的困扰
    • 忘记var时的副作用
    • 访问全局对象
    • 单 var 模式
    • 声明提前:分散的 var 带来的问题
  • for 循环
  • for-in 循环
  • (不)扩充内置原型
  • switch 模式
  • 避免隐式类型转换
    • 避免使用 eval()
  • 使用parseInt()进行数字转换
  • 编码风格
    • 缩进
    • 花括号
    • 左花括号的放置
    • 空格
  • 命名规范
    • 构造器命名中的大小写
    • 单词分隔
    • 其他命名风格
  • 书写注释
  • 书写API文档
    • 一个例子:YUIDoc
  • 编写易读的代码
  • 相互评审
  • 生产环境中的代码压缩(Minify)
  • 运行JSLint
  • 小结

第三章 直接量和构造函数

  • 对象直接量
    • 对象直接量语法
    • 通过构造函数创建对象
    • 获得对象的构造器
  • 自定义构造函数
    • 构造函数的返回值
  • 强制使用new的模式
    • 命名约定
    • 使用that
    • 调用自身的构造函数
  • 数组直接量
    • 数组直接量语法
    • 有意思的数组构造器
    • 检查是不是数组
  • JSON
    • 使用JSON
  • 正则表达式直接量
    • 正则表达式直接量语法
  • 原始值的包装对象
  • Error对象
  • 小结

第四章 函数

  • 背景知识
    • 术语释义
    • 声明 vs 表达式:命名与提前
    • 函数的name属性
    • 函数提前
  • 回调模式
    • 一个回调的例子
    • 回调和作用域
    • 异步事件监听
    • 超时
    • 库中的回调
  • 返回函数
  • 自定义函数
  • 立即执行的函数
    • 立即执行的函数的参数
    • 立即执行的函数的返回值
    • 好处和用法
  • 立即初始化的对象
  • 条件初始化
  • 函数属性——Memoization模式
  • 配置对象
  • 柯里化 (Curry)
    • 函数应用
    • 部分应用
    • 柯里化
    • 什么时候使用柯里化
  • 小结

第五章 对象创建模式

  • 命名空间模式
    • 通用的命名空间函数
  • 声明依赖
  • 私有属性和方法
    • 私有成员
    • 特权方法
    • 私有化失败
    • 对象直接量及其私有成员
    • 原型及其私有成员
    • 将私有函数暴露为共有方法
  • 模块模式
    • 暴露模块模式
    • 创建构造器的模块
    • 在模块中引入全局上下文
  • 沙箱模式
    • 全局构造函数
    • 添加模块
    • 实现这个构造函数
  • 静态成员
    • 共有静态成员
    • 私有静态成员
  • 对象常量
  • 链式调用模式
    • 链式调用模式的利弊
  • method() 方法
  • 小节

第六章 代码复用模式

  • 类式继承 vs 现代继承模式
  • 类式继承的期望结果
  • 类式继承 1 ——默认模式
    • 跟踪原型链
    • 这种模式的缺点
  • 类式继承 2 ——借用构造函数
    • 原型链
    • 利用借用构造函数模式实现多继承
    • 借用构造函数的利与弊
  • 类式继承 3 ——借用并设置原型
  • 类式继承 4 ——共享原型
  • 类式继承 5 —— 临时构造函数
    • 存储父类
    • 重置构造函数引用
  • Klass
  • 原型继承
    • 讨论
    • 例外的ECMAScript 5
  • 通过复制属性继承
  • 混元(Mix-ins)
  • 借用方法
    • 例:从数组借用
    • 借用并绑定
    • Function.prototype.bind()
  • 小结

第七章 设计模式

  • 单例
    • 使用new
    • 将实例放到静态属性中
    • 将实例放到闭包中
  • 工厂模式
    • 内置对象工厂
  • 迭代器
  • 装饰器
    • 用法
    • 实现
    • 使用列表实现
  • 策略模式
    • 数据验证示例
  • 外观模式
  • 代理模式
    • 一个例子
  • 中介者模式
    • 中介者示例
  • 观察者模式
    • 例1:杂志订阅
    • 例2:按键游戏
  • 小结

第八章 DOM和浏览器模式

  • 分离关注点
  • DOM 脚本编程
    • DOM访问
    • DOM操作
  • 事件
    • 事件处理
    • 事件委托
  • 长时间运行的脚本
    • setTimeout()
    • Web Workers
  • 远程脚本
    • XMLHttpRequest
    • JSONP
    • Frame和Image加载指示器
  • 部署JavaScript
    • 合并脚本
    • 代码减肥和压缩
    • 过期头
    • 使用CDN
  • 加载策略
    • script标签的位置
    • HTTP 分块
    • 动态插入script标签非阻塞载入脚本
    • 延迟加载
    • 按需加载
    • 预加载
  • 小节

索引

About

No description, website, or topics provided.

Resources

Readme
Activity

Stars

340 stars

Watchers

25 watching

Forks

108 forks
Report repository

Releases

Packages

Contributors

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.