Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

JavaScript 中的差异化继承

这篇文章需要技术复核。如何帮忙。

这篇文章需要文法复核。如何帮忙。

这篇翻译不完整。请帮忙从英语翻译这篇文章

简介

差异化继承是基于原型编程的一个常见模型,它讲的是大部分的对象是从其他更一般的对象中派生而来的的,只是在一些很小的地方进行了修改。每个对象维护一个指向它们的 prototype 的引用和一个差异化属性列表。

示例

下面的代码为克隆一个对象提供了简单的方法:

Object.prototype.clone = function(){
  // 创建一个新的对象,并用 this 作为它的原型
  var p = Object.create(this);

  /* 并不是必须的:
  // 在新对象上应用构造函数
  this.constructor.apply(p, arguments);
  */

  return p;
};

使用 clone, 它可以简便的从通用原型中派生出特殊对象。下面的例子使用了 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() );

相关链接

文档标签和贡献者

 此页面的贡献者: x4storm, Witcher42
 最后编辑者: x4storm,