js常见面试题

1.JS 的数据类型有哪些?

简单数据类型:Undefined、Null、Boolean、Number 和 String。

复杂数据类型:Object

2.javaScript 的 Dom 节点操作创建、插入、删除、复制、查找

一、创建节点、追加节点

1、createElement(标签名)创建一个元素节点(具体的一个元素)。

2、createTextNode(节点文本内容)创建一个文本节点

3、createDocumentFragment()    //创建一个 DOM 片段

4、appendChild(节点)追加一个节点

二、插入节点

1、appendChild(节点)也是一种插入节点的方式,还可以添加已经存在的元素,会将其元素从原来的位置移到新的位置。

2、insertBefore(a,b)是参照节点,意思是a 节点会插入 b 节点的前面。

三、删除、移除节点

1、removeChild(节点) 删除一个节点,用于移除删除一个参数(节点)。其返回的被移除的节点,被移除的节点仍在文档中,只是文档中已没有其位置了。

四、复制节点

cloneNode() 方法,用于复制节点, 接受一个布尔值参数, true 表示深复制(复制节点及其所有子节点), false 表示浅复制(复制节点本身,不复制子节点)

五、替换节点

1、replaceChild(插入的节点,被替换的节点) ,用于替换节点,接受两个参数,第一参数是要插入的节点,第二个是要被替换的节点。返回的是被替换的节点。

六、查找节点

1、getElementsByTagName()     //通过标签名称

2、 getElementsByName()     //通过元素的 Name 属性的值(IE 容错能力较强,会得到一个数组,其中包括 id 等于 name 值的)

3、getElementById()     //通过元素 Id,唯一性

3.请说说事件委托机制?这样做有什么好处?

事件委托,就是某个事件本来该自己干的,但是自己不干,交给别人来干。就叫事件委托。打个比方:一个 button 对象,本来自己需要监控自身的点击事件,但是自己不来监控这个点击事件,让自己的父节点来监控自己的点击事件。

好处:A,提高性能:列如,当有很多 li 同时需要注册事件的时候,如果使用传统方法来注册事件的话,需要给每一个 li 注册事件。然而如果使用委托事件的话,就只需要将事件委托给该一个元素即可。这样就能提高性能。

B,新添加的元素还会有之前的事件;

4.谈谈你对 jquery 的理解

JQuery 是继 prototype 之后又一个优秀的 Javascript 库。它是轻量级的 js 库 ,它兼容 CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0 及后续版本将不再支持 IE6/7/8 浏览器。jQuery 使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX 交互

jQuery 还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery 能够使用户的 html 页面保持代码和html 内容分离,也就是说,不用再在 html 里面插入一堆 js 来调用命令了,只需要定义 id即可

jQuery 是一个兼容多浏览器的 javascript 库,核心理念是 write less,domore(写得更少,做得更多)。 jQuery 是免费、开源的,使用 MIT 许可协议。jQuery 的语法设计可以使开发更加便捷,例如操作文档对象、选择 DOM 元素、制作动画效果、事件处理、使用 Ajax 以及其他功能。除此以外,jQuery 提供 API 让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。关于 jQuery 的内部封装原理

1、为了防止全局变量污染,把 jQuery 的代码写在一个自调函数中,

2、咱们平常使用的$实际上 jQuery 对外暴漏的一个工厂函数,

3、而构造函数在 jQuery 的内部叫 init,并且这个构造函数还被添加到了 jQuery 的原型中。当我们调用工厂函数的时候 返回的其实是一个构造函数的实例

4、jQuery 为了让第三方能够对其功能进行扩展,所以把工厂函数的原型与构造函数的原型保持了一致。这样子对外暴漏工厂函数,即可对原型进行扩展。

你可能感兴趣的:(js常见面试题)