原生JS面试题及答案.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

原生JS面试题及答案

1.请解释原型、原型链的概念,并用代码举例说明instanceof的判断原理

答案:

原型(prototype):每个函数创建时自带的属性,指向一个对象,该对象的属性和方法会被函数的实例继承。

原型链:实例对象通过__proto__指向其构造函数的原型,原型对象又通过__proto__指向更高层原型(如Object.prototype),最终指向null,这种链式结构就是原型链。

instanceof原理:判断右侧构造函数的prototype是否在左侧实例的原型链上。

代码示例:

//构造函数

functionPerson(name){

this.name=name;

}

//实例

constlily=newPerson(Lily);

//验证原型关系

console.log(lily.__proto__===Person.prototype);//true(实例__proto__指向构造函数原型)

console.log(Person.prototype.__proto__===Object.prototype);//true(原型链上层)

console.log(Object.prototype.__proto__);//null(原型链终点)

//instanceof原理验证

console.log(lilyinstanceofPerson);//true(Person.prototype在lily原型链上)

console.log(lilyinstanceofObject);//true(Object.prototype在lily原型链上)

2.什么是闭包?闭包有哪些实际应用场景?需要注意什么问题?

答案:

闭包定义:函数嵌套时,内层函数引用了外层函数的变量/参数,且内层函数被外层函数外的作用域引用,此时内层函数就是闭包,它能保留外层函数的作用域(即使外层函数已执行完毕)。

实际应用场景:

模块化封装:避免变量污染全局,如封装工具函数。

防抖节流:保存定时器ID,控制函数执行频率。

数据私有化:模拟类的私有属性。

注意问题:闭包会保留外层函数的作用域,若未及时释放引用,会导致内存泄漏(如DOM元素被闭包引用时,即使DOM删除,内存仍无法回收)。

代码示例(防抖函数):

//闭包实现防抖:间隔1000ms内无新触发则执行函数

functiondebounce(fn,delay){

lettimer=null;//闭包保留timer变量

returnfunction(...args){

clearTimeout(timer);//每次触发清除之前的定时器

timer=setTimeout(()={

fn.apply(this,args);

},delay);

};

}

//使用:输入框有哪些信誉好的足球投注网站防抖

constinput=document.querySelector(input);

input.oninput=debounce((e)={

console.log(有哪些信誉好的足球投注网站内容:,e.target.value);

},1000);

3.请分析以下代码的执行顺序,并说明原因(事件循环相关)

console.log(1);

setTimeout(()={

console.log(2);

Promise.resolve().then(()=console.log(3));

},0);

Promise.resolve().then(()=console.log(4));

console.log(5);

答案:

执行顺序:1→5→4→2→3

原因(事件循环机制):

同步代码优先执行:先打印1,再执行console.log(5),打印5。

异步任务分两类:

微任务(Microtask):Promise.then/catch/finally、async/await等,优先级高于宏任务。

宏任务(Macrotask):setTimeout、setInterval、DOM事件等。

同步代码执行完后,先清空微任务队列:执行Promise.resolve().then(...),打印4。

微任务清空后,执行宏任务队列:执行setTimeout回调,先打印2,再触发新的微任务Promise.resolve().then(...),打印3。

4.原生JS中获取DOM元素的方法有哪些?它们的返回值和区别是什么?

答案:

常用方法及区别:

方法

返回值类型

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档