今天要分享的内容是tom大叔的JavaScript系列的读书观后感
第一部分,编写高质量JavaScript代码的基本要点
内容不多,但是作为从头规范开始,值得遵循,现在看来,才更能明白里面的道理。
总结一下:
1. 避免全局变量,为啥?自己去看,以及隐式全局变量的副作用,那怎么办?命名空间
2. 推荐单一的单var形式,如 var a = 1,b = 2,myobject = {};形式
3. for循环,预存缓存变量,for-in遍历对象用hasOwnProperty,去掉原型链的属性
4. 避免使用eval,记住该咒语“eval()是魔鬼”,给setInterval(), setTimeout()和Function()构造函数传递字符串,大部分情况下,与使用eval()是类似的,因此要避免
5. 编码规范,缩进,空格,花括号,分号
6. 命名函数,啥时候大写,啥时候小写,推荐驼峰命名
7. 关于注解,通常,当你深入研究一个问题,你会很清楚的知道这个代码是干嘛用的,但是,当你一周之后再回来看的时候,想必也要耗掉不少脑细胞去搞明白到底怎么工作的。就是保持注释的及时更新,因为过时的注释比没有注释更加的误导人。
第二部分,揭秘命名函数表达式
总结如下:
1. 什么是申明函数?
2. 什么是表达式函数?
3. 什么是函数语句?
4. 什么是命名函数?
5. 主要是区别的地方,很细微,然后又很多浏览器的怪异行为,坑比较多
6. 还有一种函数表达式不太常见,就是被括号括住的(function foo(){}),他是表达式的原因是因为括号 ()是一个分组操作符,它的内部只能包含表达式
7. 后面的部分,如果第一次看,肯定看不懂,是啥意思,建议先忽略掉
第三部分,全面解析Module模式
总结如下:
1. 正常的module模式,缺点就是,每次都必须new,每个实例都是单独的
“`
var Calculator = function (eq) {
//这里可以声明私有成员
var eqCtl = document.getElementById(eq);
return {
// 暴露公开的成员
add: function (x, y) {
var val = x + y;
eqCtl.innerHTML = val;
}
};
};
“`
2. 改进过后的,利用函数自执行,可以直接使用
“`
var blogModule = (function () {
var my = {}, privateName = “博客园”;
function privateAddTopic(data) {
// 这里是内部处理代码
}
my.Name = privateName;
my.AddTopic = function (data) {
privateAddTopic(data);
};
return my;
} ());
“`
3. 改進松耦合
“`
var blogModule = (function (my) {
// 添加一些功能
return my;
} (blogModule || {}));
“`
4. 克隆
“`
var blogModule = (function (old) {
var my