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

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);

猜你喜欢

转载自blog.csdn.net/qq_44880095/article/details/113675087