🗒️《你不知道的JavaScript》第四章笔记
2024-1-31
| 2024-4-8
0  |  阅读时长 0 分钟
date
icon
password
description
permalink
categories
type
status
slug
summary
tags
category
updated
Apr 8, 2024 12:16 PM

类理论

类是对现实世界实体的抽象,通过封装数据和相关的操作方法。继承允许创建基于通用类的专门化子类。这样的结构促进了代码重用和组织。在类层次结构中,子类可以重写父类方法以展现特定行为,这种机制称为多态。面向对象编程将数据结构视为具有相关操作的实体,以整洁的方式模拟现实世界的复杂性。
类是一种设计模式。许多语言提供了对于面向类软件设计的原生语法。JavaScript 也有类 似的语法,但是和其他语言中的类完全不同。

类的机制

类的机制提供了一个框架,允许我们创建数据和方法的蓝图。这个蓝图(类)可以用来实例化对象,这些对象具备了类定义的属性和行为。通过继承,一个类可以基于另一个类来创建,继承其属性和方法,同时还可以添加或改写特定的功能。多态性允许方法在不同的上下文中呈现不同的行为,而共享的方法名增强了代码的表现力和灵活性。简而言之,类使得代码更加模块化,易于管理和扩展。

类的继承

类的继承是一种机制。它可以让子类继承父类的方法和属性。这样,子类可以重用父类的代码,减少了重复,并且可以通过添加新方法或重写现有方法来扩展或定制其行为。在继承链中,多态允许我们编写可适用于父类及其任何子类的代码,并且在运行时能够根据对象的实际类型来确定调用哪个方法。例如下面的代码:
多重继承就是一个子类继承了多个父类,但是这样会导致一些问题。例如继承的2个父类中有同样的方法或者属性,那么该使用谁呢。基于种种问题,多重继承并不被推荐使用。

混入

在继承或者实例化时,JavaScript的对象机制并不会自动执行复制行为。简单来说,JavaScript 中只有对象,并不存在可以被实例化的“类”。一个对象并不会被复制到其他对象,它们会被关联起来。 由于在其他语言中类表现出来的都是复制行为,因此 JavaScript 开发者也想出了一个方法来模拟类的复制行为,这个方法就是混入。接下来我们会看到两种类型的混入:显式和隐式。
  • 显式混入:像Object.assign()这样的工具可以将一个对象的属性复制到另一个对象上,这是一种显式的方式。
  • 隐式混入:通过使用.call().apply()方法将一个对象的上下文(this)更改为另一个对象,然后执行函数。
混入可以提供一个轻量级,更易于理解和维护的方式来共享功能。但是,它们也有潜在的缺点,比如可能导致属性名冲突,或者在混入的属性和方法之间产生隐秘的依赖关系。此外,因为混入通常涉及复制属性,所以它们并不适合复制复杂的、引用其他对象的属性。而且会产生代码语法和维护的问题。
 
  • Javascript
  • Vue3+vite 部署到Vercel如何优雅的避免代码嵌套
    • Waline
    目录