Function函数对象)。 代码如下: function Animal(name){ this.name=name; }
再创建一个Lion“类”,“继承”于Animal 代码如下: function Lion(){ Animal.apply(this, ["狮子"]); }
这里使用了Animal的apply方法,把Animal的执行环境改成Lion被调用时的执行环境。 这里要解释一下,我们要想使用Lion这个“类”,通常需要new一个Lion。如: var l = new Lion(); 而new关键字是十分伟大的,在上段代码中,new关键字完成了以下几项工作: 1)开辟堆空间,以准备存储Lion对象 2)修改Lion对象本身的执行环境,使得Lion函数的this指向了Lion函数对象本身。 3)调用Lion“类”的“构造函数”,创建Lion对象 4)将Lion函数对象的堆地址赋值给变量l,这个时候l就指向了这个Lion函数对象 所以经过new关键字以后Animal.apply(this, ["狮子"])中的this已经指向了Lion函数对象本身了,所
以这段代码就将Animal函数的执行环境改变成了Lion函数中,相当于以下代码: 代码如下: function Lion(){ function Animal(name){ this.name=name; } }
而此时的this已经是Lion函数对象了所以上段代码进一步相当于: 代码如下: function Lion(){ this.name=name; }