了解 JavaScript 中的原型继承和 ESlasses

了解 javascript 中的原型继承和 eslasses

javascript 具有与大多数传统 oop 语言不同的继承机制。原型是主要焦点,而 es6 类提供了更现代的方法。让我们看看 es6 类如何提高可读性和实用性以及原型继承如何运作。

1. 原型:继承的基础

javascript 中的每个对象都有一个到另一个对象的内部链接,称为其原型。这个原型对象可以有自己的原型,形成一条链。

示例

const animal = { eats: true };const rabbit = object.create(animal);rabbit.hops = true;console.log(rabbit.eats); // true (inherited)console.log(rabbit.hops); // true (own property)

登录后复制

说明:

在这里,兔子继承了动物的饮食习惯。这演示了对象如何通过继承共享属性。

2. 构造函数:构建对象

在 es6 类之前,javascript 使用构造函数来创建对象并初始化其属性。

示例

function animal(name) {  this.name = name;}animal.prototype.eats = true;const dog = new animal('dog');console.log(dog.name); // dogconsole.log(dog.eats); // true

登录后复制

说明

animal 构造函数初始化 name。 eats 属性是通过 animal.prototype 添加的,从而实现继承。

3. 主要对象:共同祖先

主对象充当其他对象的原型。

立即学习“Java免费学习笔记(深入)”;

示例

const masterobject = { type: 'generic' };const specificobject = object.create(masterobject);specificobject.name = 'specific';console.log(specificobject.type); // generic (inherited)console.log(specificobject.name); // specific (own property)

登录后复制

说明

masterobject 是共同祖先,specicobject 继承了它的 type 属性,同时添加了 name。

4. 原型链:遵循层次结构

javascript 查找原型链以查找属性和方法。

示例

const grandparent = { role: 'grandparent' };const parent = object.create(grandparent);parent.role = 'parent';const child = object.create(parent);console.log(child.role); // parent

登录后复制

说明

子对象寻找角色。它找到父级的角色,演示原型链如何解析属性查找。

5. 原型继承:共享方法

对象可以通过原型继承来共享方法。

示例

function animal(name) {  this.name = name;}animal.prototype.speak = function() {  console.log(this.name + ' makes a noise.');};function dog(name) {  animal.call(this, name);}dog.prototype = object.create(animal.prototype);dog.prototype.constructor = dog;dog.prototype.bark = function() {  console.log(this.name + ' barks.');};const dog = new dog('rex');dog.speak(); // rex makes a noise.dog.bark();  // rex barks.

登录后复制

说明

dog 继承自 animal,允许它访问语音。它还定义了自己的 bark 方法。

6. es6 类:更简洁的语法

es6 引入了一种更干净、更直观的方式来创建类。

示例

class animal {  constructor(name) {    this.name = name;  }  speak() {    console.log(this.name + ' makes a noise.');  }}

登录后复制

说明

这种基于类的语法简化了对象的创建和继承,使代码更具可读性。

7. 获取器和设置器:管理属性

es6 允许定义动态访问或修改对象属性的方法。

示例

class rectangle {  constructor(width, height) {    this.width = width;    this.height = height;  }  get area() {    return this.width * this.height;  }  set area(value) {    this.width = math.sqrt(value);    this.height = math.sqrt(value);  }}const rect = new rectangle(10, 20);console.log(rect.area); // 200rect.area = 100;console.log(rect.width); // 10console.log(rect.height); // 10

登录后复制

说明

area 是一个使用 getter 和 setter 的计算属性,允许动态更新。

8. 静态方法:类级别的实用程序

静态方法属于类本身,而不属于实例。

示例

class mathhelper {  static add(a, b) {    return a + b;  }}console.log(mathhelper.add(2, 3)); // 5

登录后复制

说明

add 是一个可以直接在 mathhelper 上访问的静态方法,对于实用函数很有用。

9. 多态性:重写方法

多态允许子类重新定义父类的方法。

示例

class Animal {  speak() {    console.log('Animal makes a noise.');  }}class Dog extends Animal {  speak() {    console.log('Dog barks.');  }}const myPet = new Dog();myPet.speak(); // Dog barks.

登录后复制

说明

dog 覆盖 animal 的发言,提供自己的实现。

结论

javascript 面向对象编程的基础由 es6 类和原型继承组成。通过了解如何使用构造函数、原型和 es6 类,可以改进编写可重用、可维护的代码。要充分利用 javascript 的继承范例,请接受这些想法!

关注我:github linkedin

以上就是了解 JavaScript 中的原型继承和 ESlasses的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2648176.html

(0)
上一篇 2025年3月7日 08:08:05
下一篇 2025年2月27日 19:30:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何查看js文件

    可以通过以下几种方法查看 JavaScript 文件:使用浏览器开发者工具(Chrome、Firefox、Edge)查看源代码使用专用编辑器通过网络请求使用代码搜索引擎 如何查看 JavaScript 文件 了解 JavaScript 代码…

    2025年3月7日
    200
  • js插件如何写

    JS 插件是扩展 JavaScript 功能的组件,编写步骤如下:确定需求创建插件定义插件 API实现插件逻辑测试插件分发插件 JS 插件编写指南 什么是 JS 插件? JS 插件是指扩展现有 JavaScript 库或框架功能的附加组件。…

    2025年3月7日
    200
  • js如何获取ua

    可以通过使用以下方法在 JavaScript 中获取 User Agent (UA):使用 navigator.userAgent使用 navigator.userAgentData使用第三方库(例如 UA-Parser、Detect.js…

    2025年3月7日
    200
  • 如何巩固js知识

    巩固 JavaScript 知识,需要定期练习编码挑战、创建个人项目和代码审查。阅读文档、参加课程和寻找导师可以加深概念理解。积极参与社区,参加编程活动、贡献开源项目和在论坛上提问和解答,可以拓展知识。构建个人网站、移动应用程序和 Web …

    2025年3月7日
    200
  • 获取网站js如何整理

    可以通过以下步骤整理网站 JavaScript:1. 模块化代码;2. 使用包管理器;3. 代码缩小;4. 加载优化;5. 避免全局污染;6. 使用严格模式;7. 遵循编码约定;8. 使用代码注释;9. 版本控制。这样可以提升网站性能、可维…

    2025年3月7日
    200
  • 如何查前端对应的js

    要查找前端代码对应的 JavaScript,可采取以下步骤:使用浏览器开发者工具(Chrome、Firefox):打开开发者工具,在“网络”选项卡中过滤“.js”文件。查看源代码:右键单击页面,选择“查看源代码”,查找“.js”文件。使用版…

    2025年3月7日
    200
  • js如何使用针式打印机

    JavaScript 原生不支持针式打印机,但可以通过第三方库或 API 实现。第三方库包括 escpos-js、thermal-printer 和 node-escpos,提供对打印机命令的访问;而 API 包括 Zebra ZPL、Br…

    2025年3月7日
    200
  • 使用 Nextjs TailwindCSS、Prisma、Google AI Studio 和 Clerk 进行 AI 旅行计划

    演示:https://travelplan-sm.vercel.app/ 人工智能旅行规划师 使用 next.js 15、tailwind css、prisma、google ai studio 和 clerk 构建的 ai 旅行规划应用程…

    2025年3月7日
    200
  • 从 JavaScript 到 TypeScript:TypeScript 初学者指南

    如果您已经学习了 javascript,您可能想知道接下来要解决什么问题。有如此多的编程语言可供选择,做出决定可能会让人不知所措。但如果您一直在考虑提高 javascript 技能,那就不用再犹豫了——typescript 是一个很好的下一…

    2025年3月7日
    200
  • Heroku 中的 Playwright 和 Chrome 浏览器测试

    我一直喜欢观看我的单元测试运行(并通过)。它们速度很快,并且通过测试让我确信我的个人作品表现得像他们应该的那样。相反,我经常很难确定浏览器端到端测试的优先级,因为编写和运行它们的速度非常慢。 幸运的是,多年来,用于端到端浏览器内测试的工具已…

    2025年3月7日 编程技术
    200

发表回复

登录后才能评论