12个前端开发面试问题整理

1.IE和标准DOM事件流的区别

一、IE的事件流叫事件冒泡,事件开始时由最具体的元素接受,然后逐级向上传播到document。

DOM的事件流包括三个阶段,事件捕获阶段、处于目标阶段、事件冒泡阶段,实际的目标在捕获阶段不会接收到事件。

二、IE中运行下列两个方法时的this指的是window,而DOM中this指的是当前元素。

三、IE指定和删除事件处理程序的方法为attachEvent()和detachEvent(),DOM中为addEventListener()和removeEventListener()。

四、IE中这两个方法的参数都要加on,比如onclick。而DOM中不用加on,为click。

2.IE和标准下有哪些兼容性的写法:

var event =event || window.event;

var target = event.target || event.srcElement;

阻止默认行为: event.preventDefault || event.returnValue=false;

阻止冒泡行为:  event.stopPropagation || event.cancelBubble=true;

 

3.ajax请求的时候get和post方式的区别:

一、get方式用户能在URL中看到提交的数据,post不能看到。

二、对于get方式服务器端使用Request.QueryString来获取变量的值,对于post方法服务器端使用Request.form来获取变量的值

三、get传输数据量小,不大于2kb,post无限制

四、get安全性差、速度快,post安全性高、速度慢。

 

4.call和apply的区别:

apply的参数必须是数组或者Arguments对象。

 

5.ajax请求时,如何解释json数据

可以使用eval(),但是不推荐,有严重的性能问题和安全性问题。

可以使用JSON.parse(),推荐。

 

6.B继承A的方法:

//寄生组合式继承

function inherit(subType,superType){

  var prototype = Object(superType.prototype)//创建对象

  prototype.construcor =subType;//增强对象

  subType.prototype=prototype;//指定对象

}

function SuperType(name){

}

function SubType(name,age){

  SuperType.call(this,name);

  this.age=age;

}

inherit(SubType,SuperType);

 

//组合继承

subType.prototype=new superType();

function subType (argument) {

  superType.call(this,argument);

}

 

7.获取非行间样式的函数

// 获取非行间样式

function getStyle (obj,attr) {

  if (obj.currentStyle) {

           return obj.currentStyle[attr];//兼容IE浏览器

  }else{

           return obj.getComputedStyle(obj,null)[attr];//其他浏览器 obj后面的参数是伪类,比如:after,不需要就为null

  }

}

 

8.事件委托是什么

利用事件冒泡,将自身事件交给父级元素来处理,这样可以提高页面性能。

比如将ul中li的onclick事件交个ul来处理。

 

9.闭包是什么,有什么特性,对页面有什么影响

闭包是有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,是在一个函数内部创建另一个函数。

闭包特性:function a(){

  return function b(){}

}

a中有一个b函数。a返回b函数。这就是闭包。

函数b的存在会让,a函数执行并且返回b后,不会被js的垃圾回收机制所回收,因为b依赖a中的变量。

对页面影响:闭包函数比一般函数会占用更多内存,过度使用闭包可能会让内存占用过多。

 

10.添加 删除 替换 插入到某个接点的方法

  • obj.appendChild()  obj.removeChild() obj.replaceChild() obj.insertbefore()

 

11.jsonp和ajax的异同:

jsonp和ajax都是请求一个URL,然后把服务器返回的数据进行处理。

不同:ajax的核心是通过XMLHttPRequest获取非本页的内容,而jsonp是通过动态的创建script标签来调用服务器提供的js脚本

 

12.javascript的本地对象,内置对象和宿主对象

本地对象包括:number 、string、boolean、function、object、error、regexp、array等

内置对象:global、math

宿主对象:其余的所有包括document、window

 

posted @ 2016-11-21 10:16  岁月不在服务区  阅读(118)  评论(0编辑  收藏  举报