分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

JS继承方式

发布时间:2023-09-06 02:24责任编辑:蔡小小关键词:暂无标签

JS继承的方式

构造继承

基本思想:

通过使用call,apply方法可以在新创建的对象上执行构造函数,用弗雷的构造函数来增加子类的实例

优点:简单明了,直接继承超类构造函数的属性和方法

缺点:无法继承原型链上的属性和方法

【约定】:

// 父类function Super(){ ?this.property = ‘Super Property‘}Super.prototype.getProperty = function(){ ?return this.property}

  

// 子类function Sub(){ ?Super.call(this) ?this.property = ‘Sub Property‘}

  

原型链继承

基本思想:

利用原型链来实现继承,超类的一个实例作为子类的原型

  

// 子类function Sub(){ ?this.property = ‘Sub Property‘}Sub.prototype = new Super()// 注意这里new Super()生成的超类对象并没有constructor属性,故需添加上Sub.prototype.constructor = Sub

  

优点:简单明了容易实现。实例是子类的实例,实际上也是父类的一个实例。父类新增原型方法属性,子类都能继承访问

缺点:所有子类的实例的原型都共享同一个超类实例的属性和方法

无法实现多继承

组合继承

基本思想

利用构造函数和原型链组合

// 子类function Sub(){ ?Super.call(this) ?this.property = ‘Sub Property‘}Sub.prototype = new Super()// 注意这里new Super()生成的超类对象并没有constructor属性,故需添加上Sub.prototype.constructor = Sub

  

优点:解决了构造继承和原型链继承的两个问题

缺点:实际上子类会拥有超类的两份属性,只是子类的属性覆盖了超类的属性

原型式继承

基本思想

采用原型式继承并不需要定义一个类,传入参数obj生成一个继承obj对象的对象

function objectCreate(obj){ ?function F(){} ?F.prototype = obj ?return new F()}

  

优点:直接通过对象生成一个继承该对象的对象

缺点:不是类式继承,而是原型式基础,缺少了类的概念

JS继承方式

原文地址:https://www.cnblogs.com/maggie-pan/p/10031594.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved