类式继承

作者: 臭臭臭魁 | 来源:发表于2017-07-08 11:44 被阅读30次

直接贴代码,注释里面写的很清楚,如果对一些基本概念不了解,建议学习《javascript高级程序设计》,把最基本的概念弄懂,再来看这篇文章,高手请忽略!

贴代码:
    /*声明父类*/
function SuperClass() {
    this.superValue = true;
}
/*为父类添加共有方法*/
SuperClass.prototype.getSuperValue = function () {
    console.log(this.superValue);
};

/*声明子类*/
function SubClass() {
    this.subValue = false;
}
/*继承父类*/
SubClass.prototype = new SuperClass();

/*为子类添加共有方法*/
SubClass.prototype.getSubValue = function () {
    console.log(this.subValue)
};

var instance = new SubClass();
    console.log(instance instanceof SuperClass);//true
    console.log(instance instanceof SubClass);//true
    console.log(SubClass instanceof SuperClass);//false
    console.log(SubClass.prototype instanceof SuperClass);//true

这里声明了两个类,第二个类SubClass的prototype被赋值为第一个类SuperClass的实例。

2:如何使用:
var instance = new SubClass();
      //测试代码如下
    instance.getSubValue();//false
    instance.getSuperValue();//true
    console.log(instance instanceof SuperClass);//true
    console.log(instance instanceof SubClass);//true
    console.log(SubClass instanceof SuperClass);//false SubClass并不是SuperClass的实例
    console.log(SubClass.prototype instanceof SuperClass);//true
2.1:instanceof解释:

1:instanceof是通过判断对象的prototype链来确定这个对象是否是某个类的实例,而不关心对象与类的自身结构。
2:instanceof是判断前面的对象是否是后面对象的实例,并不是表示两者的继承关系。

4:类式继承的缺点

其一:由于之类通过原型prototype对父类实例化,继承了父类。如果父类的共有属性是引用类型,所有子类会共享。。
其二:子类实现继承是靠其原型prototype对父类的实例化实现的,因此是无法向父类传递参数的。

缺点的测试代码如下:

/*声明父类*/
function SuperClass() {
    this.books = ['javascript','html','css'];
}
/*声明子类*/
function SubClass() {}
/*继承父类*/
SubClass.prototype = new SuperClass();
/*声明两个实例*/
var instance1 = new SubClass();
var instance2 = new SubClass();
//向实例instance1添加php。
instance1.books.push('php')
console.log(instance1.books);//['javascript','html','css','php']
console.log(instance2.books);//['javascript','html','css','php']

推荐阅读张容铭的《JavaScript设计模式》一书;

相关文章

  • js继承方式

    类式继承 构造函数继承 组合继承 类式继承 + 构造函数继承 原型式继承 寄生式继承 寄生组合式继承 寄生式继承 ...

  • 常用的几种继承方式

    类式继承 类式继承就是将子类的原型prototype指向父类的实例,从而继承到父类的方法。类式继承的缺点是无法继承...

  • js的继承方式

    1 类式继承 子类的原型对象 2 构造函数继承 创建即继承 3 组合继承 (类式继承和构造函数...

  • js面向对象实现面向对象(二)

    上一篇讲到js实现对类对封装,本篇介绍类的继承,多态。 类的继承 类式继承 类式继承方式是将父类的实例赋在子类的原...

  • #js继承

    js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承)类式继承(构造函数间的继承) 类式继承是...

  • 5. oop继承

    JavaScript 继承实现方式 A. 类式继承 所谓类式继承,就是将子类的原型指向父类的一个实例。这样优缺点就...

  • 类式继承

    直接贴代码,注释里面写的很清楚,如果对一些基本概念不了解,建议学习《javascript高级程序设计》,把最基本的...

  • 【重学前端】JavaScript中的继承

    JavaScript中继承主要分为六种:类式继承(原型链继承)、构造函数继承、组合继承、原型式继承、寄生式继承、寄...

  • 2017-12-27

    继承 类式继承 类式继承的简单原理就是,子类的原型是父类的一个实例对象。但是这中方式有个问题,对于父类中的引用类型...

  • JS类的继承

    1.类式继承 构造函数继承 3.组合继承 4.原型继承 5.寄生式继承 6.寄生组合式继承

网友评论

    本文标题:类式继承

    本文链接:https://www.haomeiwen.com/subject/wybdhxtx.html