JavaScript Patterns 1 Introduction
1.1 Pattern
"theme of recurring events or objects… it can be a template or model which can be used to generate things" (http://en.wikipedia.org/wiki/Pattern).
• Design patterns - Elements of Reusable Object-Oriented Software.
• Coding patterns - JavaScript-specific patterns and good practices related to the unique features of the language, such as the various uses of functions.
• Antipatterns - An antipattern is not the same as a bug or a coding error; it's just a common approach that causes more problems than it solves.
1.2 JavaScript: Concepts
None-Objects: Primitive types - number, string, boolean, null, and undefined
1.2.1 Object- Oriented
Activation Object which is a global object which has attributes.
Object: a collection of named properties, a list of key-value pairs. Some properties could be functions.
Objects types
- Native
Described in the ECMAScript standard
- Host
Defined by the host environment (for example, the browser environment, e.g. window and all the DOM object) .
Objects can also be categorized by:
- Build-in (e.g. Array, Date).
- User-defined (e.g. var o ={}).
1.2.2 No Classes
There are no long parent-child inheritance chains.
There are no classes and object composition is what you do anyway.
1.2.3 Prototypes
prototype is an object (not a class or anything special) and every function has a prototype property.
1.2.4 Environment
- Browser patterns
- Practical applications of a pattern
1.3 ECMAScript 5
Strict mode - for backward compatible.
function my() {
"use strict";
// rest of the function...
}
This means the code in the function is executed in the strict subset of the language. For older browsers this is just a string not assigned to any variable, so it's not used, and yet it's not an error.
In this sense ES5 is a transitional version—developers are encouraged, but not forced, to write code that works in strict mode.
Principle on writing code under strict mode
• Ensuring the offered code samples will not raise errors in strict mode
• Avoiding and pointing out deprecated constructs such as arguments.callee
• Calling out ES3 patterns that have ES5 built-in equivalents such as Object.create()
1.4 JSLint - A kind of tool for grammar check.
1.5 The console - fire bug
JavaScript Patterns 1 Introduction的更多相关文章
- JavaScript Patterns 7.1 Singleton
7.1 Singleton The idea of the singleton pattern is to have only one instance of a specific class. Th ...
- JavaScript Patterns 6.7 Borrowing Methods
Scenario You want to use just the methods you like, without inheriting all the other methods that yo ...
- JavaScript Patterns 6.6 Mix-ins
Loop through arguments and copy every property of every object passed to the function. And the resul ...
- JavaScript Patterns 6.5 Inheritance by Copying Properties
Shallow copy pattern function extend(parent, child) { var i; child = child || {}; for (i in parent) ...
- JavaScript Patterns 6.4 Prototypal Inheritance
No classes involved; Objects inherit from other objects. Use an empty temporary constructor function ...
- JavaScript Patterns 6.3 Klass
Commonalities • There’s a convention on how to name a method, which is to be considered the construc ...
- JavaScript Patterns 6.2 Expected Outcome When Using Classical Inheritance
// the parent constructor function Parent(name) { this.name = name || 'Adam'; } // adding functional ...
- JavaScript Patterns 6.1 Classical Versus Modern Inheritance Patterns
In Java you could do something like: Person adam = new Person(); In JavaScript you would do: var ada ...
- JavaScript Patterns 5.9 method() Method
Advantage Avoid re-created instance method to this inside of the constructor. method() implementatio ...
随机推荐
- 梦想CAD控件文字COM接口知识点
一.参数绘制文字 在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOU ...
- SSH命令行传输文件到远程服务器
Ubuntu操作系统 SCP命令 使用方式如下: 1.上传本地文件到远程服务器 scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/w ...
- 【转载】dubbo约束的引入(解决eclipse中报错问题)
在采用分布式系统架构时,我们会经常使用到阿里巴巴的dubbo的分布式框架. 在相关xml配置了dubbo的约束依赖后,即使能上网eclipse.myeclipse等IDE也是无法识别dubbo的相关约 ...
- sscanf 与 sscanf_s
sscanf 与 sscanf_s 之间的Details sscanf sscanf函数想必大家用的很熟练吧 sscanf函数原型: sscanf(const char* src,format,... ...
- uva 272 Tex中的引号(Tex Quotes)
TeX is a typesetting language developed by Donald Knuth. It takes source text together with a few ty ...
- codeforces 373 A - Efim and Strange Grade(算数模拟)
codeforces 373 A - Efim and Strange Grade(算数模拟) 原题:Efim and Strange Grade 题意:给出一个n位的实型数,你可以选择t次在任意位进 ...
- [bzoj1042][HAOI2008][硬币购物] (容斥原理+递推)
Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. Input 第一 ...
- idea 背景颜色设置
1. 设置当前鼠标所在行颜色 2. 设置编辑区颜色
- docker重新打包MySQL5.7镜像
1:先下载MySQL镜像 # docker pull mysql:5.7 2:运行镜像生成容器 # docker run --name mysql -p 3306:3306 -e MYSQL\_ ...
- Ubuntu下使用Sysvinit实现自定义服务(简单研究)
通过上一篇文章http://www.cnblogs.com/EasonJim/p/7168216.html可以大概了解到Sysvinit的历史. 其实在自定义服务上,使用Sysvinit是最简单的,本 ...