Javascript 继承

参考:
JavaScript高级程序设计(第3版)

  • 原型链
function SuperType() {
  this.property = true;
}

SuperType.prototype.getSuperValue = function () {
  return this.property;
}

function Subtype() {
  this.subproperty = false;
}

// 继承了SuperType
SubType.prototype = new SuperType();

SubType.prototype.getSubValue = function() {
  return this.subproperty;
}

var instance = new SubType();
console.log(instance.getSuperValue) // true;
  • 原型式继承
function object(o) {
  function F() {}
  F.prototype = o;
  return new F();
}

var person = {
  name: "Nicolars",
  friends: ["s", "c", "v"]
};

var A = object(person);
A.name = "G";
A.friends.push("r");

var B = object(person);
B.name = "L";
B.friends.push("f");

console.log(person.friends) // "s, c, v, r, f"
  • 寄生式继承
function createAnother(origin) {
  var clone = object(origin);
  clone.sayHi = function() {
    console.log("HI");
}
  return clone;
}

var person = {
  name: "N",
  friends: ["s", "c", "v"]
};

var anotherPerson = createAnother(person);
anotherPerson.sayHi(); // HI
  • 寄生组合式继承
function SuperType(name) {
  this.name = name;
  this.colors = ["red", "blue", "green"];
}

SuperType.prototype.sayName = function () {
  console.log(this.name);
}

function SubType(name, age) {
  SuperType.call(this. name); 
  this.age = age;
}

SubType.prototype = new SuperType();
SubType.prototype.constructor = SubType;
SubType.prototype.sayAge = function() {
  console.log(this.age);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 例子 我们生成两个构造函数,后面的例子都是让‘’猫‘’继承‘’动物‘’的所有属性和方法。 动物(为了更好的理解各种...
    流光号船长阅读 344评论 0 1
  • JavaScript有多种继承模式,总结起来用到的方法有:原型链的传递、构造函数的借用、对象的复制。 对于原型链和...
    minxuan阅读 6,987评论 5 29
  • 我是谁,我来自哪,我是谁的谁 想必大家一定在学习或者开发过程常常被JS独有的原型继承拨过不少脑弦吧,为何不迎问题而...
    俗三疯阅读 336评论 0 2
  • javascript只支持实现继承,而且继承主要是依靠原型链来实现的。 原型链 javascript将原型链作为实...
    shanruopeng阅读 256评论 0 1
  • 亲密关系作为我们人际关系的重要组成部分,对于我们的生活有着举足轻重的作用。亲密的关系可以影响人的身体健康,离婚的人...
    艺迦迦阅读 630评论 1 4