前端面试02(JS)

文章目录

    • 前端面试02(JS)
        • 1、js的组成
        • 2、js内置对象
        • 3、操作数组的方法
        • 4、数据类型的检测方法
        • 5、闭包是什么
        • 6、前端内存泄漏
        • 7、事件委托
        • 8、基本数据类型和引用数据类型
        • 9、原型链
        • 10、JS如何实现继承
      • 🎉写在最后

前端面试02(JS)

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹
在这里插入图片描述
💥个人主页:code袁
💥 所属专栏:前端知识

1、js的组成
1.ECMAscript:js的核心内容,描述了基础的语法。
2.文档对象模型(DOM):DOM把整个HTML页面划分为元素构成的文档。
3.浏览器对象模型(BOM):对浏览器窗口进行访问。
2、js内置对象
Sting Boolean  Number Array Object Function Math Data RegExp
Math-> abs(),sqrt() max(),min()
Data->new Data() getYear()
Arry->
String->concat() length,slice(),split()
3、操作数组的方法
push() pop() sort() splice() unshift() shift()concat() map()
filter() reduce() isArray()
那些方法会改变元素组pop() push() unshift() shift() sort()reverse()
4、数据类型的检测方法
typeof()对基本数据类型没问题,引用数据类型不适用
instanceof()只能判断引用数据类型,不能判断基本数据类型
constructor()基本和引用大概都能判断
Object.prototype.toString.call()  都能判断出来
<script>console.log(typeof 666);console.log([] instanceof Array);console.log("abc" instanceof String);console.log("abc".constructor == String);var abc = Object.prototype.toString;console.log(abc.call(2));console.log(abc.call("aaaa"));</script>
5、闭包是什么
闭包是指一个函数内部定义的函数,这个内部函数可以访问到外部函数的变量。换句话说,闭包是由函数和
与其相关的引用环境组合而成的实体。当一个函数返回了一个内部函数后,即使该函数已经执行结束,
但是内部函数引用的外部变量依然保存在内存中,这种行为称为闭包。
闭包可以用来实现函数式编程中的一些特性,如函数柯里化、延迟计算等.闭包的特点
可以重复的利用变量,并且变量不会污染全局的一种机制这个变量一直保存在内存中。
缺点:闭包过多会消耗内存,导致性能下降。
使用场景:防抖,节流,函数嵌套
6、前端内存泄漏
JS里已经分配内存地址的对象,但是由于长时间没有释放或者消除,造成长期占用内存的现象。
由于一些错误的编码或者设计导致的内存无法被正确释放的问题。这可能会导致页面性能下降、
页面崩溃或者浏览器崩溃等严重后果。常见类型1.未及时清理不再使用的变量或对象:如果在代码中有一些变量或对象不再被使用,但是没有被及时清理,
这些变量或对象会一直占用内存,导致内存泄漏。
2.事件监听器未正确移除:如果在页面中添加了事件监听器,但是在元素被移除或者页面跳转时
未正确移除这些事件监听器,会导致内存泄漏。
3.循环引用:如果对象之间存在循环引用,即使这些对象不再被使用,由于彼此之间相互引用,
导致垃圾回收器无法正确识别这些对象为垃圾,从而无法释放内存。
4.定时器未清理:如果在代码中使用了定时器,但是在页面卸载或者不再需要定时器时未清理,
会导致定时器一直在运行,占用内存。 
7、事件委托
事件委托是一种常见的前端开发技术,也称为事件代理。它利用事件冒泡的原理,将事件处理程序添加
到父元素而不是每个子元素上。当子元素触发事件时,事件会冒泡到父元素,然后由父元素统一处理。好处1.减少内存消耗:通过将事件处理程序添加到父元素,而不是每个子元素,可以减少内存消耗,
因为只需要一个事件处理程序。
2.简化代码:通过事件委托,可以减少重复的事件处理程序代码,使代码更加简洁和易于维护。
3.提高性能:减少了事件处理程序的数量,可以提高页面的性能,特别是在处理大量元素时。
总的来说,事件委托是一种优化前端开发的技术,可以简化代码、提高性能,并减少内存消耗。
8、基本数据类型和引用数据类型
在JavaScript中,数据类型可以分为基本数据类型和引用数据类型两种。1. 基本数据类型(Primitive Data Types):- 数字(Number):整数和浮点数。- 字符串(String):文本数据。- 布尔值(Boolean):true 或 false。- undefined:表示未定义的值。- null:表示空值。- Symbol(ES6新增):唯一且不可改变的值。- BigInt(ES11新增):用来表示大整数。2. 引用数据类型(Reference Data Types):- 对象(Object):包括普通对象、数组、函数等。- 函数(Function):一种特殊的对象,具有可调用的行为。- 数组(Array):一种特殊的对象,用于存储多个值。- 日期(Date):表示日期和时间。- 正则表达式(RegExp):用于匹配字符串的模式。基本数据类型存储在栈内存中,而引用数据类型存储在堆内存中,并且在栈内存中存储的是引用数据类型的地址。
基本数据类型是按值访问的,而引用数据类型是按引用访问的。
在操作基本数据类型时,会直接操作其实际的值,而在操作引用数据类型时,
实际上是操作其在堆内存中的地址。var obj = {name: "張三",age: 18,};var obj1 = obj;obj1.name = "李四";console.log(obj);console.log(obj1);
9、原型链
原型链是JavaScript中用于实现继承和对象属性查找的机制。它是为构造函数的实例共享属性和方法。
每个对象都有一个原型(prototype)属性,指向另一个对象,这个对象的原型又可以指向另一个对象,、
以此类推,形成了一个链式结构,即原型链。function person() {this.say = function () {console.log("说");};}person.prototype.look = function () {console.log("话");};var p1 = new person();var p2 = new person();p1.say();p2.say();p1.look();p2.look();console.log(p1.__proto__ === person.prototype);当我们访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JavaScript会沿着原型链向
上查找,直到找到对应的属性或方法,或者到达原型链的顶端(即Object.prototype)。这样就实现了属性和方法的继承。在原型链中,每个对象都有一个原型对象(prototype),可以通过对象的__proto__属性来访问。
当我们创建一个对象时,该对象会自动关联到一个原型对象,可以通过构造函数的prototype属性来指定对象的
原型。子对象可以通过原型链继承父对象的属性和方法,实现代码的复用和继承。原型链是JavaScript中非常重要的概念,它是实现对象之间继承关系的基础,也是理解JavaScript中对象属性查找机制的关键。当我们访问一个对象的属性或方法时,如果对象本身没有该属性或方法,JavaScript会沿着原型链向上查找,
直到找到对应的属性或方法或者到达顶端的Object.prototype。
10、JS如何实现继承
在JavaScript中,实现继承的方式有多种,其中包括
1.原型链继承
function Parent() {this.name = 'Parent';
}function Child() {
}Child.prototype = new Parent();
Child.prototype.constructor = Child;var child = new Child();
console.log(child.name); // 输出 'Parent'2.构造函数继承
function Parent() {this.name = 'Parent';
}function Child() {Parent.call(this);
}var child = new Child();
console.log(child.name); // 输出 'Parent'3.组合继承
function Parent() {this.name = 'Parent';
}function Child() {Parent.call(this);
}Child.prototype = new Parent();
Child.prototype.constructor = Child;var child = new Child();
console.log(child.name); // 输出 'Parent'4.原型式继承
5.寄生式继承
6.ES6中的class继承
class Parent {constructor() {this.name = 'Parent';}
}class Child extends Parent {constructor() {super();}
}let child = new Child   console.log(child.name); // 输出 'Parent'

🎉写在最后

🍻伙伴们,如果你已经看到了这里,觉得这篇文章有帮助到你的话不妨点赞👍或 Star ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~

你的支持就是我更新的最大动力💪~

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

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

相关文章

百度交易中台之系统对账篇

作者 | 天空 导读 introduction 百度交易中台作为集团移动生态战略的基础设施&#xff0c;面向收银交易与清分结算场景&#xff0c;赋能业务、提供高效交易生态搭建。目前支持百度体系内多个产品线&#xff0c;主要包括&#xff1a;度小店、小程序、地图打车、文心一言等。本文…

从零开始搭建游戏服务器 第四节 MongoDB引入并实现注册登录

这里写目录标题 前言正文添加依赖安装MongoDB添加MongoDB相关配置创建MongoContext类尝试初始化DB连接实现注册功能测试注册功能实现登录逻辑测试登录流程 结语下节预告 前言 游戏服务器中, 很重要的一点就是如何保存玩家的游戏数据. 当一个服务端架构趋于稳定且功能全面, 开发…

qt-pdf-viewer-library 编译过程记录

1.qtpdfviewerinitializer.h 中 类模板问题需要修改为下面代码: https://github.com/develtar/qt-pdf-viewer-library 下载代码&#xff1a; 编译出现错误 修改代码&#xff0c;如下: 2.无法触发onViewerLoaded 事件&#xff0c;就是界面无法显示PDF文件 修改下面代码&#…

使用JNDIExploit-1.2-SNAPSHOT.jar复现log4j2详细流程

1.进入到改工具所在的目录&#xff0c;然后cmd打开命令行 查看一下帮助信息 -l 指定开启ladp服务的端口 -p 指定开启http服务的端口 -i 指定开启服务的ip&#xff0c;也就是攻击者的ip&#xff0c;也可以是黑客的公网服务器 因为这里的靶场是部署在kali当中的&#xf…

MySQL数据库操作学习(5)函数和储存过程

文章目录 一、简介二、函数1.格式2.带参数的函数3.定义变量3.如何查询变量值 三、储存过程1.格式2.参数3.in的接入参数4.out的接入参数5.in和out区别 四、应用场景 一、简介 在 SQL 中&#xff0c;函数&#xff08;Function&#xff09;和存储过程&#xff08;Stored Procedur…

web渗透测试漏洞复现:未授权访问漏洞合集

web渗透测试漏洞复现 Active MQ 未授权访问 Atlassian Crowd 未授权访问 CouchDB 未授权访问 Docker 未授权访问 Dubbo 未授权访问 Druid 未授权访问 Elasticsearch 未授权访问 FTP 未授权访问 Hadoop 未授权访问 JBoss 未授权访问 Jenkins 未授权访问 Jupyter Notebook 未授权…

竞争优势:大型语言模型 (LLM) 如何重新定义业务策略

人工智能在内容创作中的突破 在当今快节奏的商业环境中&#xff0c;像 GPT-4 这样的大型语言模型 (LLM) 不再只是一种技术新颖性&#xff1b; 它们已成为重新定义跨行业业务战略的基石。 从增强客户服务到推动创新&#xff0c;法学硕士提供了企业不容忽视的竞争优势。 1. 加强…

设计模式中的UML基础

设计模式中的UML基础 目录 1、UML概述 2、UML的用途 3、UML的构成 4、UML图 5、UML类图 5.1、类的构成 5.2、类与类之间的关系 6、绘制UML图的软件工具 在讲解设计模式时&#xff0c;会使用到UML建模中的类图去讲解类与类之间的关系&#xff0c;所以这里需要给大家普…

蓝桥杯day4刷题日记

P8605 [蓝桥杯 2013 国 AC] 网络寻路 思路来源于https://www.luogu.com.cn/article/iat8irsf #include <iostream> using namespace std; int n,m; int q[10010]; int v[100010],u[100010]; long long res;int main() {cin>>n>>m;for(int i0;i<m;i){cin…

【SpringSecurity】十三、基于Session实现授权认证

文章目录 1、基于session的认证2、Demosession实现认证session实现授权 1、基于session的认证 流程&#xff1a; 用户认证成功后&#xff0c;服务端生成用户数据保存在session中服务端返回给客户端session id (sid&#xff09;&#xff0c;被客户端存到自己的cookie中客户端下…

Android Studio实现内容丰富的安卓校园二手交易平台(带聊天功能)

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号083 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看二手商品列表 3.发布二手商品 4.商品详情 5.聊天功能…

NodeJS 中的设计模式

Node.js 是一个流行的 JavaScript 运行时&#xff0c;允许开发者使用事件驱动、非阻塞 I/O 模型构建可扩展的网络应用程序。和任何复杂的框架一样&#xff0c;Node.js 应用程序可以从使用成熟的设计模式中受益&#xff0c;以促进代码重用、可维护性和健壮性。本文将概述一些对 …

在微信小程序中或UniApp中自定义tabbar实现毛玻璃高斯模糊效果

backdrop-filter: blur(10px); 这一行代码表示将背景进行模糊处理&#xff0c;模糊程度为10像素。这会导致背景内容在这个元素后面呈现模糊效果。 background-color: rgb(255 255 255 / .32); 这一行代码表示设置元素的背景颜色为白色&#xff08;RGB值为0, 0, 0&#xff09;&a…

docker批量删除容器或镜像

删除容器 停止所有容器 删除所有容器&#xff0c;需要先停止所有运行中的容器 docker stop docker ps -a -q docker ps -a -q&#xff0c;意思是列出所有容器(包括未运行的)&#xff0c;只显示容器编号&#xff0c;其中 -a : 显示所有的容器&#xff0c;包括未运行的。 …

以太坊的演变:EIP、ERC 概念以及革命性的 ERC20、ERC721 和 ERC115 标准

文章目录 一、EIP——以太坊发展的基石1.1 什么是EIP&#xff1f;1.2 历史背景&#xff1a;前身的 BIP1.3 EIP的重要性1.4 流程&#xff1a;从提案到实施 二、进入 ERC——以太坊内的标准化协议2.1 解读 ERC&#xff1a;以太坊征求意见2.2 ERC 标准的诞生和意义 三、聚焦 ERC20…

如何动态修改spring中定时任务的调度策略(2)

上一篇文章中我们一下走读了一下spring中实现@Scheduled的源码,想必你对spring中实现定时调度的原理更加了解吧,文末我们两个问题, 1.spring在进行定时调度时,使用的线程池是默认,那么这个默认的线程池的配置是怎样的呢? 2.如何动态调整调度策略。 接下来我们详细分析一…

第四百一十二回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题的结果"相关的内容&#xff0c;本章回中将介绍自定义标题栏.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我…

在Linux/Ubuntu/Debian中使用iFuse访问iOS 设备(例如 iPhone 或 iPad)上的文件可双向复制粘贴

iFuse 是一款工具&#xff0c;可让你在 Linux 系统上安装 iOS 设备&#xff08;例如 iPhone 或 iPad&#xff09;&#xff0c;使你能够访问其文件系统并与设备传输文件。 以下是有关如何使用 iFuse 的基本指南&#xff1a; 安装依赖项&#xff1a;在安装 iFuse 之前&#xff0c…

go语言-基础元素与结构的使用

go基础元素与结构的使用&#xff0c;快速上手 编译go文件 编译为可执行文件 go build 文件名.go运行文件 ./文件名输入/输出 引用fmt库&#xff08;关于输入输出的库&#xff09; 输入 **scanf&#xff1a;**按照给定的格式依次读取数据&#xff08;包括非法数据&#xff…

计算机网络——HTTP

HTTP报文格式长什么样&#xff1f; HTTP报文它是由请求行&#xff0c;请求头&#xff0c;请求体组成的 请求行他是请求或响应的基本信息 请求头他是使用key-value格式可以更加详细的说明报文 请求体是传输的具体内容 是如何分割的&#xff1f; 请求行与请求头他是用\r\n来…