Javacript如何实现继承?

简介: 在 JavaScript 中,可以使用原型链和构造函数来实现继承。下面分别介绍两种方式的实现方法

在 JavaScript 中,可以使用原型链和构造函数来实现继承。下面分别介绍两种方式的实现方法:


1. 使用原型链实现继承

javascriptCopy Codefunction Parent(name) {
  this.name = name;
}
Parent.prototype.getName = function() {
  return this.name;
};
function Child(name, age) {
  Parent.call(this, name); // 继承属性
  this.age = age;
}
Child.prototype = new Parent(); // 继承方法
Child.prototype.constructor = Child; // 修复构造函数指向
var child = new Child('Alice', 10);
console.log(child.getName()); // 输出 'Alice'

在这个例子中,通过将 Child 的原型设置为一个新的 Parent 实例来实现继承,这样 Child 就可以访问 Parent 的属性和方法。


2. 使用构造函数实现继承(经典继承)

javascriptCopy Codefunction Parent(name) {
  this.name = name;
}
Parent.prototype.getName = function() {
  return this.name;
};
function Child(name, age) {
  Parent.call(this, name); // 继承属性
  this.age = age;
}
var parent = new Parent('Bob');
var child = new Child('Alice', 10);
console.log(parent.getName()); // 输出 'Bob'
console.log(child.getName()); // 报错,因为 Child 没有继承 Parent 的原型方法

在这个例子中,通过在子类构造函数内部使用 Parent.call(this, name) 来继承父类的属性,但无法继承父类的原型方法。


在实现继承时,要正确处理原型链和构造函数的关系,以避免出现意外的行为。另外,ES6 中也引入了 class 和 extends 的语法糖,使得实现继承更加直观和易用。


相关文章
|
10月前
继承(6种方式)以及优缺点
继承(6种方式)以及优缺点
|
1月前
|
程序员 C语言 C++
【C++语言】继承:类特性的扩展,重要的类复用!
【C++语言】继承:类特性的扩展,重要的类复用!
|
2月前
|
算法 编译器 C语言
【C/C++ 编程题 01】用C++设计一个不能被继承的类
【C/C++ 编程题 01】用C++设计一个不能被继承的类
41 0
|
11月前
|
Java C++
面对对象三大特性:封装、继承、多态
面对对象三大特性:封装、继承、多态
|
12月前
|
索引
接口和类有什么异同
接口和类有什么异同
|
12月前
|
C# 索引
C#中接口和类有什么异同
C#中接口和类有什么异同
|
设计模式
从“封装、继承、多态”看构建知识网
从“封装、继承、多态”看构建知识网
49 0
|
安全 Java 程序员
java面向对象的三大特性之封装和继承(配视频讲解)
🍅程序员小王的博客:程序员小王的博客 🍅程序员小王的资源博客:http://wanghj.online/ 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线 ———————————————— 版权声明:本文为CSDN博主「程序员小王java」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_44385486/article/details/128171102
140 0
java面向对象的三大特性之封装和继承(配视频讲解)
|
存储 Java 数据库
Java面向对象之封装和继承
本篇文章记录博主对面向对象部分的学习,带大家认识Java基础知识——包与继承,后续内容将持续更新。
74 0
Java面向对象之封装和继承
|
Java
java面向对象三大特性,继承篇
1.继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
134 0
java面向对象三大特性,继承篇