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

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

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

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

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

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

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

浏览器

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

var event =event || window.event;服务器

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

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

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

 

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

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

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

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

4、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