当前位置: 首页 > news >正文

江西赣建建设监理网站无锡市建设工程质量监督站网站

江西赣建建设监理网站,无锡市建设工程质量监督站网站,wordpress 数据库 备份,关键词搜索优化一、继承的本质 继承:子对象可以自动拥有父对象的属性和方法,就像孩子继承父母的基因。JavaScript 的继承:通过原型链实现(原型和原型链是底层核心)。 二、4 种常见继承方式 1. 原型链继承(传家宝模式&am…

一、继承的本质

  • 继承:子对象可以自动拥有父对象的属性和方法,就像孩子继承父母的基因。
  • JavaScript 的继承:通过原型链实现(原型和原型链是底层核心)。

二、4 种常见继承方式

1. 原型链继承(传家宝模式)
  • 原理:将父类的实例作为子类的原型
  • 优点:子类能继承父类原型上的方法
  • 缺点:所有子类实例共享父类的引用属性(如数组、对象)
function 父亲() {this.财产 = ["房子", "车子"];
}
父亲.prototype.姓氏 = "张";function 儿子() {}
儿子.prototype = new 父亲(); // 继承const 大儿子 = new 儿子();
大儿子.财产.push("存款"); // 修改会影响所有子类
const 二儿子 = new 儿子();
console.log(二儿子.财产); // ["房子", "车子", "存款"](问题!)

2. 构造函数继承(复制家产模式)
  • 原理:在子类构造函数中调用父类构造函数
  • 优点:每个子类实例有独立的属性
  • 缺点:无法继承父类原型上的方法
function 父亲() {this.=;
}
父亲.prototype.说姓氏 = function() {console.log("我姓" + this.);
};function 儿子() {父亲.call(this,); // 继承属性
}const 小明 = new 儿子("王");
console.log(小明.); // "王"
小明.说姓氏(); // 报错!(无法继承原型方法)

3. 组合继承(家产+家训双传模式)
  • 原理:原型链继承 + 构造函数继承组合
  • 优点:既能继承属性,又能继承原型方法
  • 缺点:父类构造函数被调用两次,效率略低
function 父亲() {this.=;
}
父亲.prototype.说姓氏 = function() {console.log("我姓" + this.);
};function 儿子(,) {父亲.call(this,); // 第1次调用父构造函数(继承属性)this.=;
}
儿子.prototype = new 父亲(); // 第2次调用父构造函数(继承原型)
儿子.prototype.constructor = 儿子; // 修复构造函数指向const 小明 = new 儿子("张", "小明");
小明.说姓氏(); // "我姓张"

4. 寄生组合继承(完美模式)
  • 原理:通过拷贝父类原型,避免重复调用父类构造函数
  • 优点:解决组合继承的效率问题
  • 推荐:ES6 class 继承的底层实现方式
function 继承原型(子类, 父类) {const 原型副本 = Object.create(父类.prototype); // 复制父类原型原型副本.constructor = 子类; // 修正构造函数子类.prototype = 原型副本;
}function 父亲() {this.=;
}
父亲.prototype.说姓氏 = function() {console.log("我姓" + this.);
};function 儿子(,) {父亲.call(this,); // 只调用一次父构造函数this.=;
}
继承原型(儿子, 父亲); // 继承原型方法const 小明 = new 儿子("李", "小明");
小明.说姓氏(); // "我姓李"

三、现代写法(ES6 class 语法糖)

class 父亲 {constructor() {this.=;}说姓氏() {console.log(`我姓${this.}`);}
}class 儿子 extends 父亲 {constructor(,) {super(); // 相当于 Father.call(this, 姓)this.=;}
}const 小明 = new 儿子("赵", "小明");
小明.说姓氏(); // "我姓赵"
  • 本质classextends 是语法糖,底层基于寄生组合继承。

四、继承方式对比

继承方式优点缺点适用场景
原型链继承简单共享引用属性小型项目
构造函数继承独立属性无法继承原型方法需要属性隔离
组合继承属性独立 + 继承原型方法父类构造函数调用两次传统项目
寄生组合继承最优解实现稍复杂中大型项目
ES6 class语法简洁需支持 ES6现代项目

总结

  • 核心原则:通过原型链实现属性和方法的传递。
  • 推荐方案
    • 现代项目:直接用 ES6 class
    • 传统项目:手动实现寄生组合继承
  • 一句话记忆:继承就是「子承父业」,JavaScript 靠原型链实现! 👨👦
http://www.dtcms.com/a/503707.html

相关文章:

  • 如何生成逼真的合成表格数据:独立采样与关联建模方法对比
  • FastGPT 与 MCP 协议概述
  • 软路由系统如何做网站上海做网站seo
  • K8S--ConfigMap的用法
  • Docker 常用命令整理
  • 网站降权原因北京公司车牌指标
  • 【片上网络专题讨论一】 片上总线的发展历程
  • 忘记密码更改ubuntu18.08的密码--前提是要知道用户名work
  • Vue非单文件组件
  • SAP SD 客户信用主数据查询接口分享
  • 斯坦福大学 | CS336 | 从零开始构建语言模型 | Spring 2025 | 笔记 | Lecture 4: Mixtrue of experts
  • 2025最新版Eclipse for Java安装使用指南
  • 写作网站后台账号密码忘了怎么办男女直接做那个的视频网站
  • 基于Spring AI Deep Researcher Agent
  • 海洋承德网站建设公司互联科技 行业网站
  • [嵌入式系统-153]:RS485通信与CAN通信的比较
  • Decoder-Only架构下Decoder的学习
  • Anaconda安装和使用
  • 3.8 JSON Schema 术语回顾
  • 第二次面试:C++qt开发实习生
  • 泰安建设网站哪个好单位网站开发费用进什么科目
  • 【Flume】Flume Learning
  • 和网站设计人员谈价要注意什么那些网站是asp做的
  • 网站视频提取软件app天河做网站设计
  • GPU服务器存储选型指南:SFF与LFF硬盘深度解析与实战策略
  • 学校网站建设介绍吉林网络推广代运营
  • 集合性能基准测试报告:ArrayList vs LinkedList、HashMap vs TreeMap、并发 Map 四兄弟
  • 黄石做网站公司二手商品网站制作
  • c2c网站功能关于网站建设的英文歌
  • k8s(十)Helm详解