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
的过程只涉及JavaScript
、XMLHttpRequest
和DOM
。XMLHttpRequest
是aja x
的核⼼机制
6.哪些操作会造成内存泄漏?
- 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在
setTimeout
的第⼀个参数使⽤字符串⽽⾮函数的话,会引发内存泄漏 闭包使⽤不当
7.XML和JSON的区别
- 数据体积⽅⾯,
JSON
相对 于XML
来讲,数据的体积⼩,传递的速度更快些。 - 数据交互⽅⾯,
JSON
与JavaScript
的交互更加⽅便,更容易解析处理,更好的数据交互 - 数据描述⽅⾯,
JSON
对数据的描述性⽐XML
较差 - 传输速度⽅⾯,
JSON
的速度要远远快于XML
8.对webpack的看法
WebPack 是⼀个模块打包⼯具,你可以使⽤ WebPack
管理你的模块依赖,并编绎输出模 块们所需的静态⽂件。它能够很好地管理、打包 Web
开发中所⽤到的 HTML
、Javascript
、 CSS
以及各种静态⽂件(图⽚、字体等),让开发过程更加⾼效。对于 不同类型的资源, webpack
有对应的模块加载器。 webpack
模块打包器会分析模块间的 依赖关系,最后 ⽣成了优化且合并后的静态资源
9.对AMD和Commonjs的理解
CommonJS
是服务器端模块的规范,Node.js
采⽤了这个规范。CommonJS
规范加载模 块是同步的,也就是说,只有加载完成,才能执⾏后⾯的操作。AMD
规范则是⾮同步加载 模块,允许指定回调函数AMD
推荐的⻛格通过返回⼀个对象做为模块对象,CommonJS
的⻛格通过对module.exports
或exports
的属性赋值来达到暴露模块对象的⽬的
10. javascript有哪些⽅法定义对象
- 对象字⾯量:
var obj = {};
- 构造函数:
var obj = new Object();
- Object.create():
var obj = Object.create(Object.prototype);