《javascript语言精粹》读书笔记三
第五章 继承
值得一提的是每章的开头都提到了,一句名言,瞬间正本书从一部严肃的学术著作,变成了一部颇有意思的引人入胜的有趣读物。
第五章讲的是js的继承,js的继承有很多种,比如借用原型,call(apply)法,原型继承,等等,不一而足,书里提到了一种很不错的挺新颖的属性扩充的方法,具体简单实现如下:
js code:
var extend = function(child) {
// 附加属性和实例方法
child.a = 'aaa';
child.b = 'bbb';
child.insMethod = function() {
console.log('i am instants method');
}
return child;
}
// 调用方法
var x = extend({});
你一定看出来了,其实这个函数,就是一个对象的构造器,之所以这样说,是因为每当一个对象被创建的时候会产生这样一个东西 this.prototype = {constructor: this}, 当this为一个函数时,new这个对象的时候将会执行这个函数,以上这种方式,将构造函数固定下来,防止由于this指针的变化,导致构造函数的变化,也就是说这种方式可以静态化构造函数,使得构造函数不被改变。
第六章 数组
对于js来说,其中的数组是一个带有length长度属性和一系列方法的对象,和很多语言不同,当给length赋一个大值并不能导致系统给这个数组分配更多的空间,而减小length的长度,将导致数组被清空。
数组的一系列自带方式是很好用的,另外,对一个数组使用typeof的结果是‘object’,当判断一个对象是否为数组时,需要使用Object.prototype.toString.call([]) === '[object Array]'来进行判断。