面试 JavaScript 框架八股文十问十答第四期

面试 JavaScript 框架八股文十问十答第四期

作者:程序员小白条,个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐

1)new操作符的实现原理

new 操作符用于创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。其主要步骤包括:

  1. 创建一个新对象。
  2. 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象)。
  3. 执行构造函数中的代码,为这个新对象添加属性。
  4. 返回新对象。

实现原理示例:

function myNew(constructor, ...args) {const obj = Object.create(constructor.prototype); // 创建一个新对象并将构造函数的原型赋给它const result = constructor.apply(obj, args); // 执行构造函数,将构造函数的作用域绑定到新对象上return typeof result === 'object' ? result : obj; // 返回新对象或构造函数的返回值
}

2)map和Object的区别

  • 键类型:
    • Map 的键可以是任意数据类型,包括基本类型和引用类型。
    • Object 的键只能是字符串或者 Symbol。
  • 键值对顺序:
    • Map 会记住键值对的插入顺序,迭代时会按照插入顺序返回。
    • Object 不会保留插入顺序,属性的顺序可能会在不同的引擎或不同的环境下变化。
  • 大小:
    • Map 的大小可以通过 size 属性获取。
    • Object 的大小需要手动计算属性的数量。
  • 原型:
    • Map 对象有一个指向 Map 构造函数的原型的链。
    • Object 对象有一个指向 Object 构造函数的原型的链。

3)map和weakMap的区别

  • 引用关系:
    • Map 中键是强引用,不会被垃圾回收器回收。
    • WeakMap 中键是弱引用,如果没有其他引用指向键,键可能会被垃圾回收器回收。
  • 迭代与枚举:
    • Map 可以遍历并枚举其键值对。
    • WeakMap 不提供对其键的枚举功能,因为键是弱引用,不可枚举。
  • 性能:
    • WeakMap 在存储大量键值对时可能比 Map 更高效,因为它允许被垃圾回收。

4)JavaScript有哪些内置对象

JavaScript 的内置对象包括但不限于:

  • 全局对象: Object, Function, Array, String, Number, Boolean, Symbol, Date, RegExp 等。
  • Error 对象: Error, SyntaxError, TypeError, ReferenceError, RangeError, EvalError, URIError 等。
  • 数据结构: Map, Set, WeakMap, WeakSet 等。
  • 其他对象: Math, JSON, Promise, Proxy, Reflect 等。

5)常用的正则表达式有哪些?

常用的正则表达式包括但不限于:

  • 匹配邮箱地址:

    /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
    
  • 匹配 URL:

    /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/
    
  • 匹配 IP 地址:

    /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/
    
  • 匹配手机号码(中国大陆):

    /^(?:(?:\+|00)86)?1[3-9]\d{9}$/
    
  • 匹配日期(YYYY-MM-DD):

    /^\d{4}-\d{2}-\d{2}$/
    

这些正则表达式可以用于验证输入的数据是否符合特定的格式。

6)对JSON的理解

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于 JavaScript 对象的语法,但与之不完全相同。JSON 是一种文本格式,可以在不同的编程语言之间进行数据交换。它具有以下特点:

  • 易于阅读和编写: JSON 使用人类可读的文本。
  • 数据结构简单: JSON 支持基本数据类型,如字符串、数字、布尔值,以及数组和对象。
  • 独立于编程语言: JSON 是一种语言无关的格式,可以在不同的编程语言中进行解析和生成。

7)JavaScript脚本延迟加载的方式有哪些?

延迟加载 JavaScript 脚本有以下方式:

  1. defer 属性: 使用 <script defer src="script.js"></script>,延迟加载脚本,直到文档解析完成才执行。
  2. 动态创建 <script> 元素: 使用 JavaScript 动态创建 <script> 元素,设置其 src 属性并将其插入到 DOM 中。
  3. async 属性: 使用 <script async src="script.js"></script>,异步加载脚本,下载完成后立即执行,但不会阻塞文档解析。

8)JavaScript 类数组对象的定义?

类数组对象是具有数组特性(例如可通过索引访问元素、具有 length 属性)但不是真正的数组的对象。常见的类数组对象包括函数的 arguments 对象、DOM 元素列表等。它们虽然类似于数组,但通常没有数组的方法,如 forEachmap 等。

9)数组有哪些原生方法?

JavaScript 数组具有许多原生方法,包括但不限于:

  • 修改数组: push(), pop(), shift(), unshift(), splice(), reverse(), sort().
  • 连接与拆分: concat(), join(), slice().
  • 遍历数组: forEach(), map(), filter(), reduce(), reduceRight(), every(), some(), find(), findIndex().
  • 操作数组: indexOf(), lastIndexOf(), includes(), fill(), copyWithin().

10)Unicode、UTF-8、UTF-16、UTF-32的区别?

  • Unicode: Unicode 是一种字符集,它为每个字符分配了一个唯一的数字(码点),以便在各种平台、程序和语言中进行统一的字符编码。Unicode 字符集中包含了世界上几乎所有的字符。
  • UTF-8: UTF-8 是一种变长字符编码方案,它可以用来编码 Unicode 字符集中的字符。UTF-8 使用 1 至 4 个字节表示每个字符,对于英文字符使用 1 个字节,而对于中文或其他国际字符可能使用多个字节。
  • UTF-16: UTF-16 也是一种变长字符编码方案,用来编码 Unicode 字符集。UTF-16 使用 2 或 4 个字节表示每个字符,对于基本多文种平面(BMP)中的字符(U+0000 至 U+FFFF)使用 2 个字节,而对于辅助平面中的字符可能使用 4 个字节。
  • UTF-32: UTF-32 是一种固定长度的字符编码方案,每个字符使用 4 个字节表示。UTF-32 中的每个编码单元都直接对应一个 Unicode 码点,因此它可以完全覆盖 Unicode 字符集。

总的来说,UTF-8、UTF-16 和 UTF-32 是不同的字符编码方案,用来实现 Unicode 字符集的编码和表示,它们的主要区别在于字符编码的方式和存储长度。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

已 300 + Star!

⭐点赞⭐收藏⭐不迷路!⭐

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

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

相关文章

LLM之LangChain(七)| 使用LangChain,LangSmith实现Prompt工程ToT

如下图所示&#xff0c;LLM仍然是自治代理的backbone&#xff0c;可以通过给LLM增加以下模块来增强LLM功能: Prompter AgentChecker ModuleMemory moduleToT controller 当解决具体问题时&#xff0c;这些模块与LLM进行多轮对话。这是基于LLM的自治代理的典型情况&#xff0c;…

Linux 命令基础

Shell概述 Linux操作系统的Shell作为操作系统的外壳&#xff0c;为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 Shell是用户和Linux内核之间的接口程序&#xff0c;如果把硬件想象成一个球体的中心&#xff0c;内核围绕在硬件的外层管理着…

无锁序列系列笔记

下面是常见的一些实现方式&#xff1a; 1、借助智能指针来实现。下面是一篇参考博文 2、借助automic使用CAS(Compare And Swap)原子操作, std::atomic_flag&#xff0c;不同于所有 std::atomic 的特化&#xff0c;它保证是免锁的&#xff0c;不提供load()与store(val)操作&…

itextpdf使用:使用PdfReader添加图片水印

gitee参考代码地址&#xff1a;https://gitee.com/wangtianwen1996/cento-practice/tree/master/src/test/java/com/xiaobai/itextpdf 参考文章&#xff1a;https://www.cnblogs.com/wuxu/p/17371780.html 1、生成带有文字的图片 使用java.awt包的相关类生成带文字的图片&…

keil调试出现cannot evaluate新思路

我在用最新的keil时也出现了这个问题&#xff0c;网上说的办法几乎没啥用&#xff0c;包括魔术棒的设置和将变量定义为全局变量&#xff0c;都没用。 这里我使用的是keil5.13&#xff0c;编译器是AC6.21&#xff0c;硬件是STM32F407VET6 可以看到&#xff0c;即使是定义为全局变…

问题:超声波纵波斜入射时,当入射角大于第一临界角小于第二临界角时,在第二介质内只有折射横波。 #微信#经验分享#其他

问题&#xff1a;超声波纵波斜入射时&#xff0c;当入射角大于第一临界角小于第二临界角时&#xff0c;在第二介质内只有折射横波。 参考答案如图所示

QT - 嵌入式快速移植QT记录

QT快速移植指南 本指南旨在提供一个关于如何为特定目标平台快速移植QT应用程序的详细步骤说明。以下内容包含技术背景、配置步骤以及相关命令&#xff0c;帮助开发者有效地将QT应用部署在不同的硬件平台上。 技术背景 QT是一个跨平台的C图形用户界面应用程序开发框架&#x…

力扣94-二叉树的中序遍历

二叉树的中序遍历 题目链接 解题思路 递归解决先遍历左子树访问根节点再遍历右子树 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …

对于模糊查询的SQL,怎么优先返回等值记录

说明&#xff1a;记录一次SQL改进的方法&#xff0c;希望能对大家有启发。 场景 前端项目有一个输入框&#xff0c;根据输入的银行名称&#xff0c;去模糊查询对应的数据库表&#xff0c;返回结果集&#xff0c;显示到下拉列表中。 因为银行名称字段包括了分行名&#xff0c…

缓存穿透、缓存击穿与缓存雪崩

缓存穿透、缓存击穿与缓存雪崩 1.本质区别 缓存穿透指的是数据库不存在数据&#xff0c;导致无法缓存&#xff0c;每次查询都查数据库&#xff0c;数据库压垮 缓存击穿指的是缓存键值对key过期了&#xff0c;key过期期间&#xff0c;大量请求访问&#xff0c;不经过缓存&…

ONLYOFFICE桌面编辑器8.0新特性:PDF表单、RTL支持、Moodle集成、本地界面主题等

ONLYOFFICE是由领先的IT公司—Ascensio System SIA经验丰富的IT专家开发的项目。这是一款强大的在线编辑器&#xff0c;能够为提供高效的文本文档、电子表格、演示文稿、表单和 PDF 编辑工具。 继 ONLYOFFICE 文档 v8.0发布后&#xff0c;适用于 Linux、Windows 和 macOS 的免费…

C++中类的6个默认成员函数【构造函数】 【析构函数】

文章目录 前言构造函数构造函数的概念构造函数的特性 析构函数 前言 在学习C我们必须要掌握的6个默认成员函数&#xff0c;接下来本文讲解2个默认成员函数 构造函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c…

电商网站基础布局——以小兔鲜为例

项目准备 /* base.css */ /* 內减模式 */ * {margin: 0;padding: 0;box-sizing: border-box; }/* 设置网页统一的字体大小、行高、字体系列相关属性 */ body {font: 16px/1.5 "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei","Hiragino Sans…

【WPF】布局容器/面板总结XAML-Panel控件

Panel元素是控制元素呈现&#xff08;大小、尺寸、位置、字内容排列&#xff09;的组件。 常用布局容器 Grid 用于创建网格区域&#xff08;行列&#xff09; // 在Grid里面使用 //定义列的数量 <Grid.ColumnDefinitions><ColumnDefinition /> </Grid.Colum…

Codeforces Round 106 D. Coloring Brackets 【区间DP + 记忆化搜索实现】

D. Coloring Brackets 约定 ∣ S ∣ ≤ 700 |S| \leq 700 ∣S∣≤700 题意 给定一个正则括号序列 s s s&#xff0c;我们需要求出合法的染色方案数。合法的条件为&#xff1a; 每个符号要么不染色&#xff0c;要么染红色&#xff0c;要么染蓝色对于每对配对的括号&#xf…

(十八)springboot实战——spring securtity注解方式的授权流程源码解析

前言 在上一节内容中&#xff0c;我们介绍了如何在FilterSecurityInterceptor过滤器中处理用户的授权流程&#xff0c;并分析了其源码&#xff0c;spring security还提供了方法级别的授权方式&#xff0c;通过EnableMethodSecurity注解启用权限认证流程&#xff0c;只需要在方…

Ivanti Pulse Connect Secure VPN SSRF(CVE-2023-46805)漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

Failed to construct ‘RTCIceCandidate‘ sdpMid and sdpMLineIndex are both null

最近在搞webrtc&#xff0c;在编写函数处理远端传递来的candidate时报错了&#xff0c;具体信息如下。国内关于webrtc的资料很少&#xff0c;所以去国外社区转了一圈&#xff0c;回来记录一下报错的解决方案 其实这个bug也好解决&#xff0c;根据报错信息可以判断是RTCIceCand…

Java 学习和实践笔记(5)

三种类型的变量&#xff1a; Java中常量的定义&#xff1a; 下面的这个加号表示连接的意思&#xff0c;也就是把前面的字符串常量和后面的变量值在显示时连在一起&#xff1a; 显示效果如下&#xff1a; 如果没有用这个加号&#xff0c;就会报错&#xff1a;

微信小程序(四十)API的封装与调用

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.在单独的js文件中写js接口 2.以注册为全局wx的方式调用接口 源码&#xff1a; utils/testAPI.js const testAPI{/*** * param {*} title */simpleToast(title提示){//可传参&#xff0c;默认为‘提示’wx.sho…