精通Javascript 之 继承
原型式继承
原型式继承类似于一种单继承,它利用prototype属性,prototype可以整个复制一个对象,但是它不会从其他原型或者构造函数中继承属性,而属性都是从实际对象那里继承过来的。
//创建一个新的构造函数为空的Person对象 var Person = Class.create(); //将下面的函数复制到Person的prototype中 Object.extend(Person.prototype, { //这个函数由Person构造函数立即调用 initialize: function (name) { this.name = name; }, //Person对象的简单函数 getName: function () { returnthis.name; } }); //创建一个构造函数为空的User对象 var User = Class.create(); //User对象继承了所有的父类的函数 User.prototype = Object.extend(new Person(), { //将父类的初始化函数重载为新的 initialize: function (name, password) { this.name = name; this.password = password; }, //给这个对象添加一个新的函数 getPassword: function () { returnthis.password; } }); //看看我们创造出来的两个类吧 var person = new Person("Lisa"); var user = new User("Lisa", "123");Prototype确实只使用了两个简单的函数来创建和管理整个面向对象结构,这两个函数的出发点很简单:
Class.create():整个函数仅仅使用一个匿名函数封装起来作为构造函数。这种简单的构造函数只做一件事情——调用并执行对象的initialize属性。如果对象中不包含initialize属性就会抛异常。
Object.extend():这个只是把所有属性从一个对象复制到另一个对象。
虽然这个技术很复杂,但是提供的面向对象需要的基本功能。