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

相關文章
相關標籤/搜索