前端关于JavaScript面试题(五)

60.jQuery.extend 与 jQuery.fn.extend 的区别?

$.fn = $.prototype ,原型中的属性和方法是所有的实例对象共享的

jQuery.extend 用来扩展 jQuery 对象本身(所扩展的方法只能被当前的jQuery对象访问)

jQuery.fn.extend 是在 jQuery 原型对象上扩展方法,此时该方法可以被所有的jQuery对象共享

61.jQuery 和 Zepto 的区别?各自的使用场景?

jQuery 主要用于 pc 端,当然有对应的 jQuery mobile 用于移动端

zepto 比 jQuery 更加小巧,主要用于移动端

jquery mobile 相对于 zepto 功能强大,但是体积也很庞大,zepto 非常的轻量

62.Zepto 的点透问题如何解决?

点透主要是由于两个 div 重合,例如:一个 div 调用 show(),一个 div 调用 hide(),这个时候当点击上面的 div 的时候就会影响到下面的那个 div;

解决办法:github 上有一个叫做 fastclick 的库,它也能规避移动设备上 click 事件的延迟响应

63.事件绑定和普通事件有什么区别
div1.onclick=function(){};
1、如果说给同一个元素绑定了两次或者多次相同类型的事件,那么后面的绑定会覆盖前面的绑定
2、不支持 DOM 事件流 事件捕获阶段=>目标元素阶段=>事件冒泡阶段

addEventListener
1、 如果说给同一个元素绑定了两次或者多次相同类型的事件,所有的绑定将会依次触发
2、 支持 DOM 事件流的
3、 进行事件绑定传参不需要 on 前缀

addEventListener(“click”,function(){},true);//此时的事件就是在事件冒泡阶段执行
ie9 开始,ie11 edge:addEventListener /removeEventListener
ie9 以前:attachEvent/detachEvent
1、 进行事件类型传参需要带上 on 前缀
2、 这种方式只支持事件冒泡,不支持事件捕获
事件绑定是指把事件注册到具体的元素之上,普通事件指的是可以用来注册的事件

64.IE 和标准模式下有哪些兼容性的写法
var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
var target = ev.srcElement||ev.target

65.iframe 的优缺点?
优点:
1. 解决加载缓慢的第三方内容如图标和广告等的加载问题
2. Security sandbox 。sandbox通过限制被嵌入内容所允许的操作而提升iFrames的安全性
3. 并行加载脚本

缺点:
1. iframe 会阻塞主页面的 onload 事件
2. 即时内容为空,加载也需要时间
3. 没有语意

66.DOM 操作——怎样添加、移除、移动、复制、创建和查找节点
1. 创建新节点
createDocumentFragment() // 创建一个 DOM 片段
createElement() // 创建一个具体的元素
createTextNode() // 创建一个文本节点

2. 添加、移除、替换、插入
appendChild()
removeChild()
replaceChild()
insertBefore() // 在已有的子节点前插入一个新的子节点

3. 查找
getElementsByTagName() // 通过标签名称
getElementsByName() // 通过元素的 Name 属性的值(IE 容错能力较强,会得到一个数组,
其中包括 id 等于 name 值的)
getElementById() // 通过元素 Id,唯一性

67.documen.write 和 innerHTML 的区别?

document.write 只能重绘整个页面
innerHTML 可以重绘页面的一部分

68.哪些操作会造成内存泄漏?
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。

1. setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
2. 闭包
3. 控制台日志
4. 循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

69.window.location.search 返回的是什么?

答:查询(参数)部分。除了给动态语言赋值以外,我们同样可以给静态页面, 并使用 javascript 来获得相信应的参数值。

返回值:?ver=1.0&id=timlq 也就是问号后面的!

70.window.location.hash 返回的是什么?
答:锚点  #后面的

71.window.location.reload() 作用?
答:刷新当前页面。

72.BOM 对象有哪些,列举 window 对象?
1、window 对象 ,是 JS 的最顶层对象,其他的 BOM 对象都是 window 对象的属性;
2、document 对象,文档对象;
3、location 对象,浏览器当前 URL 信息;
4、navigator 对象,浏览器本身信息;
5、screen 对象,客户端屏幕信息;
6、history 对象,浏览器访问历史信息;

73.请问代码实现 outerHTML

说明:outerHTML 其实就是 innerHTML 再加上本身;

Object.prototype.outerHTML = function(){
    var innerCon = this.innerHTML, //获得里面的内容
    outerCon = this.appendChild(innerCon); //添加到里面
    alert(outerCon);
}

74.你如何优化自己的代码?
代码重用 (封装)
避免全局变量(模块化 mvc..)
拆分函数避免函数过于臃肿:单一职责原则
适当的注释,尤其是一些复杂的业务逻辑或者是计算逻辑,都应该写出这个业务逻辑的具体过程
内存管理,尤其是闭包中的变量释放

75.列举常用的 js 库以及分别适用的领域
jquery:简化了 js 的一些操作,并且提供了一些非常好用的 API
jquery ui、jquery-easyui:在 jqeury 的基础上提供了一些常用的组件 日期,下拉框,表格这
些组件
require.js、sea.js(阿里的玉帛)+》模块化开发使用的
zepto:精简版的 jquery,常用于手机 web 前端开发 提供了一些手机页面实用功能,touch
ext.js:跟 jquery 差不多,但是不开源,也没有 jquery 轻量
angular、vue、react、flutter:MV*框架,适合用于单页应用开发(SPA)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值