简介
差异化继承是基于原型编程的一个常见模型,它讲的是大部分的对象是从其他更一般的对象中派生而来的的,只是在一些很小的地方进行了修改。每个对象维护一个指向它们的 prototype
的引用和一个差异化属性列表。
示例
下面的代码为“继承”一个对象提供了简单的方法:
Object.prototype.clone = function(){ // 创建一个新的对象,并用 this 作为它的原型 var p = Object.create(this); /* 并不是必须的: // 在新对象上应用构造函数 this.constructor.apply(p, arguments); */ return p; };
使用 继承
, 它可以简便的从通用原型中派生出特殊对象。下面的例子使用了 clone
和差异化继承来建立不断增长的个性化对象。
var root = {}; // Could be any object with any prototype object var record = root.clone(); record.toString = function(){ return "a Record"; }; var person = root.clone(); person.firstName = false; person.lastName = false; person.toString = function(){ return this.firstName ? (this.lastName ? this.firstName + " " +this.lastName : this.firstName) : (this.lastName ? this.lastName : "a Person"); }; JoePerson = person.clone(); JoePerson.firstName = "Joe"; alert( JoePerson.toString() );