HTML、HTTP、Web综合面试题(六)

本文深入探讨JavaScript中的原型和原型链,解释如何通过实例构造函数与__proto__访问原型。同时,介绍了事件代理的概念及其在性能优化中的作用。接着,阐述了W3C事件模型的三个阶段,包括冒泡和捕获。此外,详细说明了new操作符的工作原理以及Ajax的基本原理和流程。最后,讨论了内存泄漏的常见原因,如setTimeout的不当使用和闭包问题。
摘要由CSDN通过智能技术生成
1.JavaScript原型,原型链 ? 有什么特点?
  • 每个对象都会在其内部初始化⼀个属性,就是 prototype (原型),当我们访问⼀个对象的 属性时
  • 如果这个对象内部不存在这个属性,那么他就会去 prototype ⾥找这个属性,这个prototype ⼜会有⾃⼰的 prototype ,于是就这样⼀直找下去,也就是我们平时所说的 原型链的概念
  • 关系:instance.constructor.prototype = instance.__proto
  • 当我们需要⼀个属性的时, Javascript 引擎会先看当前对象中是否有这个属性, 如果没 有的就会查找他的 Prototype 对象是否有这个属性,如此递推下去,⼀直检索到 Object 内 建对象
2.什么是事件代理

事件代理( Event Delegation ),⼜称之为事件委托。是 JavaScript 中常⽤绑定事 件的常⽤技巧。顾名思义,“事件代理”即是把原本需要绑定的事件委托给⽗元素,让⽗元 素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。使⽤事件代理的好处是 可以提⾼性能 可以⼤量节省内存占⽤,减少事件注册,⽐如在 table 上代理所有 td 的 click 事件就 ⾮常棒

3. 事件模型

W3C 中定义事件的发⽣经历三个阶段:捕获阶段( capturing )、⽬标阶段 ( targetin)、冒泡阶段( bubbling

  • 冒泡型事件:当你使⽤事件冒泡时,⼦级元素先触发,⽗级元素后触发
  • 捕获型事件:当你使⽤事件捕获时,⽗级元素先触发,⼦级元素后触发
  • DOM 事件流:同时⽀持两种事件模型:捕获型事件和冒泡型事件
  • 阻⽌冒泡:在 W3c 中,使⽤ stopPropagation() ⽅法;在IE下设置 cancelBubble = true
  • 阻⽌捕获:阻⽌事件的默认⾏为,例如 click - <a> 后的跳转。在 W3c 中,使⽤preventDefault() ⽅法,在 IE 下设置 window.event.returnValue = false
4.new操作符
  • 创建⼀个空对象,并且 this 变量引⽤该对象,同时还继承了该函数的原型
  • 属性和⽅法被加⼊到 this 引⽤的对象中
  • 新创建的对象由 this 所引⽤,并且最后隐式的返回 this
5.Ajax原理
  • Ajax 的原理简单来说是在⽤户和服务器之间加了—个中间层( AJAX 引擎),通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后⽤ javascript 来操作 DOM⽽更新⻚⾯。使⽤户操作与服务器响应异步化。这其中最关键的⼀步就是从服 务器获得请求数据
  • Ajax 的过程只涉及 JavaScriptXMLHttpRequestDOMXMLHttpRequestaja x的核⼼机制
6.哪些操作会造成内存泄漏?
  • 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在
  • setTimeout的第⼀个参数使⽤字符串⽽⾮函数的话,会引发内存泄漏 闭包使⽤不当
7.XML和JSON的区别
  • 数据体积⽅⾯,JSON 相对 于XML 来讲,数据的体积⼩,传递的速度更快些。
  • 数据交互⽅⾯,JSONJavaScript 的交互更加⽅便,更容易解析处理,更好的数据交互
  • 数据描述⽅⾯,JSON 对数据的描述性⽐ XML 较差
  • 传输速度⽅⾯,JSON 的速度要远远快于 XML
8.对webpack的看法

WebPack 是⼀个模块打包⼯具,你可以使⽤ WebPack 管理你的模块依赖,并编绎输出模 块们所需的静态⽂件。它能够很好地管理、打包 Web 开发中所⽤到的 HTMLJavascriptCSS 以及各种静态⽂件(图⽚、字体等),让开发过程更加⾼效。对于 不同类型的资源, webpack 有对应的模块加载器。 webpack 模块打包器会分析模块间的 依赖关系,最后 ⽣成了优化且合并后的静态资源

9.对AMD和Commonjs的理解
  • CommonJS 是服务器端模块的规范, Node.js 采⽤了这个规范。 CommonJS 规范加载模 块是同步的,也就是说,只有加载完成,才能执⾏后⾯的操作。 AMD 规范则是⾮同步加载 模块,允许指定回调函数
  • AMD 推荐的⻛格通过返回⼀个对象做为模块对象, CommonJS 的⻛格通过对module.exportsexports 的属性赋值来达到暴露模块对象的⽬的
10. javascript有哪些⽅法定义对象
  • 对象字⾯量: var obj = {};
  • 构造函数: var obj = new Object();
  • Object.create(): var obj = Object.create(Object.prototype);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shansec~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值