<commit_before>---
layout:     post
title:      浅谈JavaScript设计模式
date:       2015-06-09 21:47:29
summary:    最近在学习<NAME>/<NAME>写的《JavaScript设计模式》，大概将此书看了两遍，很有收获。此书适合于想深入学习JavaScript的同学，用来增加你的内功。能够帮助你增强对JavaScript面向对象的理解，同时学习各种具体的设计模式，懂得应该在什么场合使用这些设计模式，以及如何实现它们，写出更优雅的代码。这篇文章用于总结我的读书笔记。
categories: 设计模式
---

最近在学习<NAME>/<NAME>写的[《JavaScript设计模式》](http://book.douban.com/subject/3329540/){:target="_blank"}，大概将此书看了两遍，很有收获。此书适合于想深入学习JavaScript的同学，用来增加你的内功。能够帮助你增强对JavaScript面向对象的理解，同时学习各种具体的设计模式，懂得应该在什么场合使用这些设计模式，以及如何实现它们，写出更优雅的代码。这篇文章用于总结我的读书笔记。
<commit_msg>add the first<commit_after>---
layout:     post
title:      浅谈JavaScript设计模式
date:       2015-06-09 21:47:29
summary:    最近在学习<NAME>/<NAME>写的《JavaScript设计模式》，大概将此书看了两遍，很有收获。此书适合于想深入学习JavaScript的同学，用来增加你的内功。能够帮助你增强对JavaScript面向对象的理解，同时学习各种具体的设计模式，懂得应该在什么场合使用这些设计模式，以及如何实现它们，写出更优雅的代码。这篇文章用于总结我的读书笔记。
categories: 设计模式
---

最近在学习<NAME>/<NAME>写的[《JavaScript设计模式》](http://book.douban.com/subject/3329540/){:target="_blank"}，大概将此书看了两遍，很有收获。此书适合于想深入学习JavaScript的同学，用来增加你的内功。能够帮助你增强对JavaScript面向对象的理解，同时学习各种具体的设计模式，懂得应该在什么场合使用这些设计模式，以及如何实现它们，写出更优雅的代码。这篇文章用于总结我的读书笔记。

####面向对象的JavaScript

####富有表现力的JavaScript

原因有6点：

 - JavaScript的灵活性：它允许你模仿其他语言的编程模式和惯用法，同时也具备自己独特的编程模式和惯用法。
 - 弱语言类型：定义变量的时候不需要申明其类型，其类型取决于其包含的数据；同时JavaScript变量可以根据所赋值改变类型。
 - 函数是一等对象：它们可以存储在变量中，可以作为参数传递给其他函数，可以作为返回值从其他函数传出，还可以在运行时进行构造。同时JavaScript中使用匿名函数来创建闭包，保护变量空间。
 - 对象的易变性：JavaScript中所有对象都是易变的，可以使用一些在大多数语言中不允许的技术，例如为函数增加属性；同时还具备内省的概念，可以在运行时检查对象的属性和方法；而已在JavaScript中，任何东西都可以在运行时候修改。
 - 继承：JavaScript使用的是基于对象的（原型式（prototypal））继承，它可以用了模仿类的继承。
 - JavaScript中的设计模式：使用原因：1）可维护性，降低模块间的耦合。2）沟通，可以在较高层面上对其进行讨论，而不必涉及过多的细节。 
{'fraction_non_alphanumeric': 0.12026862026862027, 'fraction_numerical': 0.027472527472527472, 'mean_word_length': 11.23134328358209, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1562829', 'n_tokens_mistral': 1242, 'n_tokens_neox': 1409, 'n_words': 37}