《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]'来进行判断。

Table of Contents