js 面试题(1)

2024 前端高频面试题之 JS 篇 ① 所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象② 所有函数都有一个prototype(原型)属性,属性值是一个普通的对象③ 所有引用类型的__proto__属性指向它构造函数的prototype当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__ 阅读详情

一。script 标签:

  async:资源立即下载,异步加载外部资源,确保各资源之间不存在相互依赖的问题,load之前进行加载(h5存在)

  defer:表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效(h4存在)

二。typeof / instanceof 的区别

typeof:用于检测给定变量的数据类型。返回字符串类型的值 undefined、string、number、boolean、object、function。

instanceof:(variable instanceof constructor)判断变量是否是给定引用类型(根据原型链进行判断)的实例,如果是返回true,否则返回false。注:所有引用类型的值都是 Object 的实例

三。其他类型转数字。函数:Number、parseInt、parseFloat

Number:其他类型转换过程中存在非数字则返回NaN(例如:'1a',返回NaN)。反之返回对应数值。null、false、‘’返回0,undefined 返回NaN。

parseInt、parseFloat:是从第一个字符(位置 0)开始解析每个字符。而且 也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。举例来说, "22.34.5"将会被转换为 22.34

四。+号的规则:

(1)如果都是数字则按数字计算。。

(2)如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来

(3)如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接 起来。

(4)如果有一个操作数是对象、数值或布尔值,则调用它们的 toString()方法取得相应的字符串值, 然后再应用前面关于字符串的规则。对于 undefined 和 null,则分别调用 String()函数并取得字符 串"undefined"和"null"。

五。‘==’和‘===’的区别

(1)‘==’ 是指经过类型转换之后进行比较是否相等。null == undefined 返回true。

(2)‘===’ 指不经过类型转换就相等。

(3)对于Object比较的是指针的指向地址是否是同一个地址。

六。垃圾收集:标记清除、引用计数

标记清除:当变量进入环境(例如,在函 数中声明一个变量)时,就将这个变量标记为“进入环境”。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到它们。而当变量离开环境时,则将其 标记为“离开环境”。垃圾收集器在运行的时候就会清除那些标记为“离开环境”的变量,以达到释放内存。

引用计数:引用计数的含义是跟踪记录每 个值被引用的次数。当声明了一个变量并将一个引用类型值赋给该变量时,则这个值的引用次数就是 1。 如果同一个值又被赋给另一个变量,则该值的引用次数加 1。相反,如果包含对这个值引用的变量又取 得了另外一个值,则这个值的引用次数减 1。当这个值的引用次数变成 0 时,则说明没有办法再访问这 个值了,因而就可以将其占用的内存空间回收回来。这样,当垃圾收集器下次再运行时,它就会释放那 些引用次数为零的值所占用的内存。

六。引用类型及常用函数。点击链接

七。new 操作符经历的步骤:

(1) 创建一个新对象;

(2)将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象);

(3) 执行构造函数中的代码(为这个新对象添加属性);

(4)返回新对象。

八。原型、原型对象、原型链。

(1)原型:prototype。

(2)原型对象(prototype属性):每个函数都有一个 prototype(原型)属性,这个属性是一个指针,指向一个对象,指向的对象就是原型对象。

(3)构造函数、原型和实例的关系:构造函数都有一个原型对象、原型对象有指向构造函数的指针、实例拥有指向原型对象的指针。

(4)原型链:指原型对象包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数 的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立,如此层层递进,就构成了实例与原型的链条(原型链)

九。创建对象的有哪几种形式:工厂模式、构造函数模式、原型模式、构造和原型组合模式、动态原型模式、寄生构造函数模式、稳妥构造函数模式

(1)工厂模式:显示创建新对象,然后赋值之后返回改对象。

(2)构造函数模式:必须使用new 操作符。

(3)原型模式(prototype):创建空构造函数,然后通过prototype属性添加属性和方法。缺陷无法通过构造函数传参。

(4)构造和原型组合模式:利用构造函数创建实例属性、利用原型模式创建公用方法。结果,每个实例都会有自己的一份实例属性的副本, 但同时又共享着对方法的引用。使用最广泛

(5)动态原型模式:在组合模式下。通过在构造函数中使用 if 判断动态生成不同的实例属性和方法。注意:不能重写原型

(6)寄生构造函数模式 :除了使用 new 操作符并把使用的包装函数叫做构造函数之外,这个模式跟工厂模式其实 是一模一样的。不能使用instanceof来进行判断(不推荐使用)。

(7)稳妥构造函数模式:与寄生构造函数模式相似,好处是安全性:内部的属性除了内部方法可以访问外,其他方式无法访问。不需要new操作符、新创建的实例不引用this。

十。继承:js本身是没有继承接口的、主要是通过原型链进行继承的。

(1)原型链继承:通过原型链的方式进行继承。缺陷:原先的实例属性如果修改会导致所有的实例都修改;在创建子类型的实例时,不能向超类型的构造函数中传递参数。

(2)借用构造函数:解释1:通过使用 apply()和 call()方法在(将来)新创建的对象上执行构造函数。解释2:通过在子类中使用apply()或call()方法绑定超类。解决了原型链的缺点。缺点:无法避免构造函数模式存在的问题

(3)组合继承:结合原型链继承和借用构造函数两者长处。通过借用构造函数的方式继承实例的属性和方法。通过原型链方式继承原型的属性和方法。

(4)原型式继承:通过Object.create 共享一个对象。必须要有一个对象作为基础。

(5)寄生式继承:与寄生构造函数和工厂模式类似。不需要new操作符、返回新对象。缺点:函数无法复用

(6)寄生组合式继承:结合上面的优点,最完美的继承。缺点:简单的功能是,代码量过大。例:

        

function inheritPrototype(subType, superType){
 var prototype = Object.create(superType.prototype); //创建对象
 prototype.constructor = subType; //增强对象
 subType.prototype = prototype; //指定对象
} 

function SuperType(name){
 this.name = name;
 this.colors = ["red", "blue", "green"];
}

SuperType.prototype.sayName = function(){
 alert(this.name);
};

function SubType(name, age){
 SuperType.call(this, name);

 this.age = age;
}

inheritPrototype(SubType, SuperType);

SubType.prototype.sayAge = function(){
 alert(this.age);
}; 

 

续集:面试(2)

JavaScript高级面试题(1) 笔记来源慕课网实战课程,如果喜欢希望大家可以支持,地址:https://coding.imooc.com/learn/list/190.html 1.课程概述 包括:高级基础,框架原理,app混合开发 技术:JS、ES6、虚拟DOM、vue、React、hybrid 知识点介绍: 高级基础: ES6常用语法:Class、Module、Promise等 原型高级应用:结合jQuery和zepto源... 阅读详情

相关推荐

2023前端大厂面试题之JavaScript篇(1)

js中的同步和异步 异步编程的实现方式 回调地狱 JavaScript this 关键字 JavaScript中基本数据类型和引用数据类型的区别 原型 原型链 原型链面试题 原型继承 防抖和节流 宏任务与微任务 宏任务与微任务面试题......

zag666的博客 6655

js二十五道面试题(含答案)

目录 1.线程和进程是什么?举例说明 2. js中的基础数据类型有哪几种? 了解包装对象吗? 3.对内存泄漏的了解 4.js中数组合并的方法 5.合并对象的方法 6.什么是作用域,什么是作用域链? 7.JS如何实现异步编程(5种)? 8.js中的堆内存与栈内存 9.如何去判断js数据类型? 10,怎么允许跨域(跨域解决办法) C、Nginx反向代理 D、webpack (在vue.config.js文件中)中 配置webpack-dev-server 11.怎么让对象的一个..

m0_65450343的博客 4万+

sql server安装并SSMS连接

  SQL Server是一种广泛应用于网络业务数据处理的关系型数据库管理系统。SQL Server 2016是微软公司研发的新一代旗舰级数据库和分析平台,突出高级分析和丰富可视化,并融合了关键创新功能。其可提供对企业基础架构最高级别的支持,专门针对关键业务应用的多种功能与解决方案提供最高级别的可用性,并提供更多、更全面的功能以满足不同人群对数据的需求,包括支持来自不同网络环境的数据交互、全面的自助分析等创新功能。百度搜索sql server,在官网下载 地址是:SQL Server 下载| Microso

jiankang66的博客 5187

js经典面试题及答案汇总(持续更新)

js经典面试题及答案汇总(持续更新)

Jadon_z的个人博客 7842

基于Halium 9为小米平板4移植Ubuntu Touch:内核适配与驱动调试实战

在移动设备生态中,Linux内核作为核心,通过硬件抽象层(HAL)管理底层硬件驱动,为上层系统提供统一接口。其模块化设计允许深度定制,是实现跨平台移植的技术基础。Halium项目正是利用这一原理,构建了一个中间层,将安卓内核的硬件支持能力“翻译”成标准Linux发行版能识别的格式,从而在手机、平板等移动设备上运行Ubuntu Touch、postmarketOS等移动Linux系统,极大地拓展了老旧设备的再利用价值。这一技术为开发者提供了在常见安卓硬件上进行Linux系统开发与定制的可能,尤其在嵌入式与物联

weixin_42639246的博客 377

告别偏移地址!用C# S7PLUS驱动读写西门子S7-1500符号地址(TIA Portal V17+环境配置)

本文详细介绍了如何在TIA Portal V17+环境中使用C# S7PLUS驱动读写西门子S7-1500 PLC的符号地址,告别传统的偏移地址方式。通过配置OpenSSL、集成S7PLUS驱动库,以及实战案例展示符号地址的读写方法,显著提升代码可读性和维护效率。文章还涵盖了环境准备、高级配置及常见问题解决方案,助力工业自动化开发者实现更高效的PLC通讯。

weixin_28720767的博客 319

2024年Javascript最常见的面试题以及答案

原型链是就是实例对象在查找属性时,如果查找不到,就会沿着__proto__去与对象关联的原型上查找,有则返回,如果找不到,就去找原型的原型,直至查到最顶层Object函数的原型,其原型对象的_proto__已经没有可以指向的上层原型,因此其值为null,返回undefind;创建一个新的对象,不会指向同一个地址,这个对象有着原始对象属性值的精确拷贝。就是对象的浅拷贝只会对“主”对象进行拷贝,拷贝的是对象属性的基本类型的值,如果属性是引用类型,拷贝的就是内存地址,拷贝的不深,所以称为浅拷贝;

2501_90366093的博客 5261

三相SVPWM逆变器双闭环PI解耦控制:从dq坐标系到参数整定实战

本文深入解析了三相SVPWM逆变器的双闭环PI解耦控制技术。通过引入dq坐标系,将交流量转换为直流量,并结合前馈补偿实现电流环的解耦控制。文章详细阐述了从数学模型推导、控制器设计到参数整定与SVPWM实现的完整流程,为工程师提供了从理论到实战的系统性指导。

weixin_28292761的博客 405

Javascript基础 86个面试题汇总 (附答案)

1.JavaScript是一门什么样的语言,它有哪些特点?(没有标准答案) 参考答案: JavaScript是一门强大的编程语言,是一种专为与网页交互而设计的脚本语言,是一种动态类型、弱类型、基于原型的语言。 JavaScript是客户端和服务器端脚本语言,可以插入到HTML页面中,并且是目前较热门的Web开发语言。同时,JavaScript也是面向对象编程语言。 特点: 脚本语言。JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行

数据知道的博客 6万+

LVDS高速ADC接口, xilinx fpga实现

FPGA实现lvds高速ADC数据接口,窗口对齐算法,Verilog源码

kuangxin的博客 6万+

图像处理入门007:图像处理中的数学基础:线性代数与卷积

一种:把 OpenCV 当黑盒,调用,效果不对就乱调参数;另一种:理解每个像素是怎么被周围邻域"加权平均"的,理解核翻转、边界填充、stride 的含义。前者能干活,后者能解难题。一旦遇到自定义核(比如 ISP 上的锐化)、深度学习反向传播、医学图像重建,你就必须把卷积、相关、矩阵乘法这些基本功捡回来。线性代数三件套:向量点积、矩阵乘法、线性变换;2D 卷积的数学定义:核翻转、滑动窗口、边界填充。并手写一个,验证它与和的结果完全一致(误差 < 1e-9)。f∗gn∑m−∞∞f。

专注:太空算力、AI infra、异构调度、大模型成本工程 387

JS面试题集锦——自测Javascript熟练程度(1-10)

前端常见JS面试题,自测JS熟练程度 undefined和null的区别? 二者都是JS中的基本数据类型(types=['string'、'number'、'boolean'、'null'、'undefined'、'symbol'、'bigint']),且二者同为虚值: console.log(!!null) // false console.log(!!undefined)...

qq_41580831的博客 635

无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方案

本文主要介绍了无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方案,希望能对使用wIndows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

10000个怎么用js写 创建li_面试题之Javascript实现1万的阶乘

前言最近面试的时候遇到一道面试题,就是实现10000!,当时的第一反应是直接用递归实现:function factorial_recursion(n){if(n <= 1) return 1;return n * factorial_recursion(n-1)}复制代码但是这样就会存在问题,Js中最大的安全整数为2^53- 1,10000!结果溢出该范围,代码运行结果为Infinity,无...

weixin_42548782的博客 279

基于Multisim的三相桥式全控整流电路建模、仿真与综合分析

本文基于Multisim 14.2平台,系统研究了三相桥式全控整流电路的建模与仿真方法。首先阐述了电路拓扑结构和工作原理,建立了数学模型。重点介绍了在Multisim中搭建主电路、设计六脉冲触发系统(含两种实现方案)的关键步骤,以及参数设置技巧。通过仿真分析了不同负载(阻性、阻感性)和触发角(0°-90°)下的输出特性,包括电压波形、电流谐波等性能指标。研究为电力电子教学提供了直观的仿真范例,并探讨了模型改进方向与实际工程应用价值。

huanghm88的专栏 354

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

2024年最新【面试题】JavaScript中递归的理解_js面试题 递归(1),美团点评面试经验

你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】我特地针对初学者整理一套前端学习资料。

2401_84619986的博客 904

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

js面试题1

1、判断数据类型 typeof:可以判断一般的数据类型。 toString是Object的原型方法,直接调用tostring()就能返回[object object],其他对象,则需要通过call/apply来调用才能返回正确的类型信息。 Object.prototype.toString.call('') ; // [object String] Object.prototype.toSt...

chunchun_H 183

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

js面试题:打印1-10000内的对称数的四种解法

可能因为自己代码写的少的缘故吧,我做算法题的时候,经常会往复杂层面上考虑,比如标题上的这个问题“Javascript打印出1-10000之间的所有对称数【2012 百度】”,最开始我就绕了好几个弯。 方案一:(firefox:28ms chrome:3ms)由内到外比对法。这是最初自己想到的方案,很二的感觉。。。从数字的位数中间向两边比对,碰到不相同的数字返回false,否则返回true,这个要...

weixin_30649859的博客 1309

JS面试题:实现a==1&&a==2&&a==3 返回true

JS面试题:实现a1&&a2&&a==3 返回true 思路: 重写valueOf()方法 利用隐式转换时,会调用valueOf()方法,来实现对其值的++操作 valueOf的意思是返回最适合该对象类型的原始值,而toString则是将在该对象类型的原始值以字符串形式返回。 var colors = ["red", "blue", "green"]; // 创建一个包含3 个字符串的数组 alert(colors.toString()); // red,

weixin_45664402的博客 583

javascript面试题(1)

如何理解执行上下文 JavaScript执行上下文(context)主要指代码执行环境的抽象概念。执行上下文分为三种: 全局执行上下文 函数执行上下文 eval执行上下文 每一段js代码执行,都会先创建一个上下文环境。 如何理解作用域链 前沿知识:js代码执行前会创建上下文环境,这个上下文环境包含了变量、作用域链和this. 简单理解就是从当前环境向父级一层一层查找变量的过程称之为作用域链。 varname='前端未来'; functionhello...

突维 1996

1.3 JavaScript基础面试题

登录后复制 用边框画(border),例如: { width: 0; height: 0; border-left:100px solid transparent; border-right:100px solid transparent; border-top:100px solid tran...

weixin_29350039的博客 134

JavaScript 习题及面试题 1

JavaScript 习题及面试题 1.[单选题] 有以下 ES6 代码function * gen() { yield 1; yield 2; yield 3; } 下面选项描述正确的是哪个? gen()执行后返回 2 gen()执行后返回 undefined gen()执行后返回一个 Generator 对象 gen()执行后返回 1 ----------------...

qq_34227896的博客 1万+

js 判断数组_前端面试系列——JS面试题1

js面试题一、判断 js 类型的方式1. typeof2. instanceof3. Object.prototype.toString.call()4. Array.isArray()二、ES5 和 ES6 分别几种方式声明变量三、闭包的概念?优缺点?优点:缺点:四、数组去重的方法1.ES6 的 Set2.reduce()3.filter()五、javascript 的垃圾回收机制讲一...

weixin_39568597的博客 228
上一篇: axios 导出
下一篇: js 引用类型、常用函数
黄祚敏
博客等级 码龄10年 22粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值