js 如何定义类和引用

news2025/2/23 14:27:36

前言

JS是弱定义语言,最适合用于前端的数据处理。因为前端是数据的终点,用完就抛弃,所以前端一般都只是处理简单的业务逻辑。

但是有时候我们希望前端能进行一些复杂的处理,比如SqlLite本地缓存数据库,或者前端处理一些业务逻辑,或者程序可以离线使用,这个时候就要用到模块化的解决方案

如何定义类,或者如何模仿类

这个时候就要用到面向对象的想法,什么是面向对象,就是把所有的过程抽象成一个物体执行的指令

举一个把鸡蛋放进冰箱的例子

面向过程

拿起鸡蛋
打开冰箱门
把鸡蛋放进冰箱
冰箱门关上

面向对象:这里有三个对象,鸡蛋,我,冰箱

我.拿起(鸡蛋)
冰箱.打开()
冰箱.放入(鸡蛋)
冰箱.关闭()

面向对象的优点就是我们只需要在类定义的时候把方法定义好,后面调用的时候我只用调用方法就行了,不需要考虑冰箱是如何打开的。尤其是JS这种弱定义语言,没有强类型校验,更容易出现问题。

所以JS如何定义一个类似于类的对象呢?

如何定义类

这里有两个方案,我推荐方案二,方便类型扩展

方案一:原型链/对象访问器

这个就是我的痛处了,我是2022年应届毕业生,去年去字节面试的时候一面问了这个问题直接挂掉了。主要是自己准备不充分,大三被家里逼着去考研去了。具体内容可以看我这篇自传:《关于我放弃复试去工作这件事情》

原型链基本使用

简单来说,原型链就是给我们个扩展方法,我们可以不断地去propoto上面添加方法。常见的就是js的Date.formate方法(自定义格式化方法,Date日期没有格式化方法要自己写)。

或者使用对象访问器,即Get和Set方法,可以访问内部变量

对象访问器简单使用

方案二:封装一个JS文件

上面的方法并不是最优解,因为我们需要多个地方调用这个方法,所以我们希望能将一类方法统一放到一个文件里面,比如上述的例子中,就可以新建一个冰箱的js文件,存放所有冰箱的操作

那么如何导出引用一个js文件呢?

导出文件

使用module.exports={}这个方法

SqlTest.js文件

var data = "data"

module.exports = {
    test: data
}

引入文件

使用 require方法

const SqlTest = require('./SqlTest')

console.log(SqlTest.test)//"data"
debugger;

使用import方法(要在Vue框架内,效果和require一致)

// const SqlTest = require('./SqlTest')

import SqlTest from './SqlTest';

console.log(SqlTest.test)
debugger;

如果直接导入会报错

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/558653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低代码开发平台:打破IT与业务壁垒,实现高效协作

我们生活在一个离不开应用程序的世界:无论是个人消费者,还是企业运营,应用程序往往是最终的解决方案,它们可以是模块化的,也可以是一个整体,将数据、信息都链接起来,以提高生产生活的效率。 从企…

Fiora二次元Web在线聊天室源码搭建教程|详细

安卓客户端体验:fiora点击下载 网页版体验:fiora网页版 使用的系统是Linux Centos7.6 注意: 512M内存vps可能还需要先加一点虚拟内存,不然构建过程会失败。 开始安装 命令行安装方法 一、安装Nodejs curl -sL https://rpm.nodesource.com/…

chatgpt赋能Python-python_land

Python Land: 探索Python世界的终极指南 Python是一种具有广泛用途的高级编程语言,具有简单易学的特点,因此而备受青睐。Python Land是一个编程社区,该社区专注于提供Python编程有关的资源,以帮助有兴趣的人通过学习Python语言提…

HTTP中 Connection: keep-Alive与TCP中中keepalive有什么区别?

有小伙伴不明白keep-Alive和keepalive有什么区别?今天写这篇文章详细讲清楚! HTTP是请求响应模型也就是客户端发起了请求,服务端才会返回响应,一来一回。 由于 HTTP 是基于 TCP 传输协议实现的,客户端与服务端要进行 H…

【中阳期货】国际期货与股票的区别

摘要:“股票之后就是期货”这句话生动地揭示了股票交易与期货交易的内在联系。期货交易的重要功能首先是有利于增强商品价格的预期性,为商业活动的顺利进行创造良好的条件。期货借助市场功能可以找到商品真正的市场价格,有利于制造厂商和生产者确定产品成本产品生产费用,以便顺…

ubuntu下使用python进行简单的UDP通信

目录 一、参考链接二、主要工作1.查看本机ip2.下载Ubuntu下网络调试助手 NetAssist3.编写一个python脚本测试UDP通信4.测试简单的UDP通信 一、参考链接 Ubuntu下网络调试助手 NetAssist 使用python实现UDP通信 python代码实现简单的udp通信 二、主要工作 1.查看本机ip #下载…

如何压缩过大的H2数据库文件

平台自带的H2数据库在使用过程中会随着数据量的增加而增长,但是并不会在删除数据后自动缩小。所以O2OA提供了数据库压缩命令用于缩小数据库占用的空间。 一、先决条件 1、O2Server服务器正常运行,系统安装部署请参考文档《如何在服务器上安装部署O2OA》…

微软收购暴雪战未结束;迪士尼流失 4 百万用户;苹果 iPhone 销量增长;国际旅行回暖机票订单火爆;美国年通胀率再次下降 | 经济学人第 20 周

文章目录 苹果 iPhone 销量增长,但总体收入下降微软收购暴雪战未结束迪士尼流失 4 百万用户美国年通胀率再次下降国际旅行回暖,机票订单火爆瑞银认命首席执行官,完成对瑞士信贷的最终收购最后 苹果 iPhone 销量增长,但总体收入下降…

【Linux环境基础开发工具】编辑器-vim

写在前面 vim是一个编辑器,是在Linux下编程的常用工具,如果要学习在Linux下的编程, 那学会使用vim是一个必修课,今天我就来讲解如何使用vim编辑器。 目录 写在前面 什么是vim vim的常用命令 (1)gg&a…

C++之堆排

堆排的原理和结构: 堆排序是一种常见的排序算法,基于堆这种数据结构实现。堆是一种特殊的树形数据结构,它满足以下两个条件: 堆是一棵完全二叉树。 堆的任意节点的值,都必须大于等于(或小于等于&#xff0…

平板第三方电容笔怎么样?apple pencil一代平替笔推荐

我是一位数码产品的爱好者,所以我对电容笔也有一定的了解。我认为,苹果的原装电容笔和一般的电容笔的区别,在于它们所能产生的压感效果不同。由于苹果的电容笔具有独特的“重力压感”,因此,这款画笔能让我们快速地在画…

搜索二维矩阵 II——力扣240

文章目录 题目描述法一)二分查找法二)抽象二叉搜索树BST法三)直接查找 题目描述 法一)二分查找 与搜索二维矩阵——力扣74不同,本题没有保证「每行的第一个整数大于前一行的最后一个整数」,因此无法采取「两…

CentOS安装过程笔记

以前弄过一个ls的版本是直接虚拟机带起的。是系统都是别人给设置好调好的win系统的。后来发现问题,自己也不会搞,所以那个平台就一直扔在那里也没用过。 这次自己搞就想从0试一下吧。一直以为服务器必须Linux才行,所以就想安个CentOS&#x…

TLS 加速技术:Intel QuickAssist Technology(QAT)解决方案

作者:vivo 互联网服务器团队- Ye Feng 本文介绍了 Intel QAT 技术方案,通过Multi-Buffer技术和QAT硬件加速卡的两种方式实现对TLS的加速 一、背景 当前 TLS 已经成为了互联网安全的主要传输协议,TLS带来更高的安全性的同时,也带…

【C++】用红黑树迭代器封装map和set

封装有点难 - . - 文章目录 前言一、红黑树原先代码的修改二、红黑树迭代器的实现总结 前言 因为我们要将红黑树封装让map和set使用,所以我们要在原来的基础上将红黑树代码进行修改,最主要的是修改模板参数,下面我们直接进入正题&#xff1a…

C++ 布隆过滤器哈希切割

前言 现实生活中,存在很多key_value的模型,我们可以使用哈希或者红黑树存储这些数据。但是二者只是内存的存储方式,无法处理海量数据。 海量数据的处理我们可以使用位图处理。但是位图的局限性是,其只能映射整型,对于…

【k8s】Jenkins实现springcloud应用CI、CD实践 【三】【待写】

一、运行Jenkins流水线流程思路: 场景:java微服务应用, 单体仓库,多个微服务模块,(并行构建、自动化构建、根据模块变更仅更新特定模块) java、nodejsCI阶段 并行方式; 根据模块变…

港联证券|标普500指数年内涨逾9%,美股牛市已至?

今年以来,美国标普500指数累计上涨超过9%,这引发了一场关于美股牛市是否已经到来的辩论。 持悲观态度的摩根士丹利股票策略师威尔逊(Michael Wilson)警告称,最近的反弹不过是一种假象。而美国银行的萨勃拉曼尼亚&#…

四、数据仓库详细介绍(规范)

大家好,这是数据仓库系列的第三个话题,排序在架构之后、建模之前。为什么会提的这么靠前呢? 因为规范约束的是数仓建设的全流程,以及后续的迭代和运维。事实上,数仓规范文档,应该随着架构设计文档&#xf…

chatgpt赋能Python-python_lambdify

Python Lambdify: 一个方便的数学表达式转换工具 Python是一种广泛使用的编程语言,适用于各种领域,如数据科学、机器学习和科学计算等。在这些领域中,数学表达式起到了至关重要的作用,而Python Lambdify(简称为“lamb…