Effective JavaScript :第六章
1.将undefined看成没有值
产生undefined的情况:
①未赋值的变量的初始值为undefined。
var x ;
X ; //undefined
②访问对象中不存在的属性也会产生undefined。
var obj = {} ;
obj.x ; //undefined
③函数体结尾使用未带参数的return语句,或未使用return语句都会产生undefined。
function f(){
return ;
}
function g(){};
f(); //undefined
g(); //undefined
④未给函数参数提供实参则该函数参数值为undefined。
function f(x){
return x ;
}
f(); //undefined
2.接收关键字参数的选项对象
一个函数起初很简单,然而一段时间后,随着库功能的扩展,该函数的签名会获得越来越多的参数。尝试理解下面的函数调用:
Var alert = new alert(100,75,300,200,
”error”,message,
”blue”,”white”)
幸运的是,JavaScript提供了一个简单的、轻量的惯用法:选项对象。选项对象在应对较大规模的函数签名时运作良好。
var alert = new alert({
x : 100 , y : 75 ,
width : 300 , height : 200 ,
title : “error”, messagr : message ,
titleColor : “blue”, bgColor : “white”
})
选项对象的好处是易于阅读,所有参数都是可选的,调用者可以提供任一可选参数的子集。
extend函数
function extend(target , source){
if(source){
for(var key in source){
var val = source[key];
if(typeof val !== ‘undefined’){
target[key] = val ;
}
}
}
return target ;
}
3.区分数组对象和类数组对象
①API绝不应该重载与其他类型有重叠的类型
②当重载一个结构类型与其他类型时,先测试其他类型。
③当重载其他对象类型时,接收真数组而不是类数组对象。
4.支持方法链
无状态的API的部分能力是将复杂操作分解为更小的操作的灵活性。一个很好的例子是字符串的replace方法。
在无状态方法中返回新对象来支持方法链:
var users = records.map(function(record){
return record.username ;
})
.filter(function(username){
return !!username ;
})
.map(function(username){
return username.toLowerCase() ;
}) ;
有状态的API的方法链有时被称为流畅式。如果更新方法没返回this,那么API的使用者不得不每次重复该对象的名称。例如:
$(“#notification”)
.html(“Server not responding.”)
.removeClass(“info”)
.addClass(“error”) ;
Effective JavaScript :第六章的更多相关文章
- [Effective Java]第六章 枚举和注解
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Effective JavaScript :第二章
1.熟练掌握闭包 理解闭包要学会三个基本的事实: ①JavaScript允许你引用在当前函数以外定义的变量: 例如: function makeSandwich(){ var magicIngredi ...
- Effective JavaScript :第一章
第一章 一.严格模式与非严格模式 1.在程序中启用严格模式的方式是在程序的最开始增加一个特定的字符串字面量: ‘use strict’ 同样可以在函数体的开始处加入这句指令以启用该函数的严格模式. f ...
- JavaScript 第六章总结: Getting to know the DOM
前言 这一章节介绍 DOM, 使用 DOM 的目的是使的网页能够变得 dynamic,使得 pages that react, that respond, that update themselves ...
- javascript第六章--BOM
① window对象 ② location对象 ③ navigator对象 ④ screen对象 ⑤ history对象
- 读《编写可维护的JavaScript》第六章总结
第六章 避免使用全局变量 JavaScript执行环境在很多方面都有其独特之处,全局变量就是其中之一.“全局变量”是一个神秘的对象,它表示了脚本的最外层上下文. 在浏览器中,windows对象往往重载 ...
- [Effective JavaScript 笔记]第3章:使用函数--个人总结
前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...
- 为什么我要放弃javaScript数据结构与算法(第六章)—— 集合
前面已经学习了数组(列表).栈.队列和链表等顺序数据结构.这一章,我们要学习集合,这是一种不允许值重复的顺序数据结构. 本章可以学习到,如何添加和移除值,如何搜索值是否存在,也可以学习如何进行并集.交 ...
- 《Javascript高级程序设计》阅读记录(六):第六章 下
这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...
- [书籍翻译] 《JavaScript并发编程》第六章 实用的并发
本文是我翻译<JavaScript Concurrency>书籍的第六章 实用的并发,该书主要以Promises.Generator.Web workers等技术来讲解JavaScript ...
随机推荐
- Elasticsearch 5.0 磁盘空间节省策略的认识
前言:本文是当时QQ群员讨论磁盘空间如何优化,我搜了下类似的文章,结合官方文档做了一些总结 参考文章1 参考文章2 如果你有疑问,可以联系我参与讨论,或者去原文查看. NOTE: 磁盘空间节省问题,是 ...
- Normalize.css 样式作用,及使用方法
Normalize.css 是? Normalize.css 是一个可以定制的CSS文件,它让不同的浏览器在渲染网页元素的时候形式更统一. Normalize.css 能干什么? 保留有用的默认值,不 ...
- 【UOJ #280】【UTR #2】题目难度提升
http://uoj.ac/problem/280 非常难想的贪心,用set\(O(nlogn)\). 调了一天qwq. 题解 #include<set> #include<cstd ...
- grunt--自常用配置文件--js/样式压缩打包,sass工具整合使用
// Project configuration. module.exports = function(grunt) { // 使用严格模式 'use strict'; // 这里定义我们需要的任务 ...
- 2017年IT互联网圈跑会指南~
啦啦啦~要放假啦,还有十多天就要过年啦,要走亲访友啦!相信大家也是各种胡吃海喝后,啊咧~腰上好像多了好几圈o(>﹏<)o为了让小伙伴们及时制定年后行程(减膘)计划,活动家特此奉上2017年 ...
- 干货云集 WOT 2017全球架构与运维技术峰会揭密技术难点
WOT,World Of Tech专注互联网IT技术领域,是一场不容错过的技术盛会!WOT 2017全球架构与运维技术峰会三大章节,15大技术专场,60+国内外一线互联网精英大咖站台,打造兼顾技术视野 ...
- 【NOIP2014】Day1题解+代码
Day1 T1 签到题,模拟一下随便写就能过. 不过小心像我一样表打错傻逼的调了10min. #include <algorithm> #include <iostream> ...
- PDF转换成Txt
我的弱智想法是所有能转换成PDF的文件,就都用PDF预览,上传成功后开启一个线程把文档转换成PDF,PDF再转换成txt. 目的是把txt插入索引进行全文检索. 调用的时候 string filePa ...
- Jquery 操作DropDownList 根据条件选中
$("#<%=DDLCounty.ClientID%> option").each(function () { if ($(this).text() == $(&quo ...
- POJ 2104:K-th Number(整体二分)
http://poj.org/problem?id=2104 题意:给出n个数和m个询问求区间第K小. 思路:以前用主席树做过,这次学整体二分来做.整体二分在yr大佬的指点下,终于大概懂了点了.对于二 ...