前端面試題(準備)

原型和原型鏈

原型

js中的對象都包含了一個prototype的內部屬性,這個屬性所對應的就是該對象的原型(原型是一個對象模板)

原型鏈

是有一些用來繼承和共享屬性的對象組成的對象鏈,並且原型鏈的長度是有限的(對象之間存在繼承關係,在js中是通過prototype對象指向父類對象,直到object對象爲止,這樣就形成了一個原型指向的鏈條,我們稱之爲原型鏈)

舉例:student>person>object 學生>人類>object類

function Animal(name){
	this.name=name
}
Animal.prototype.getName={
	consloe.log(this.name)
}
var animal1=new Animal('Kate');
var animal2=new Animal('Lucy');

animal1和animal2共享方法getName

var A=function(){ }
A.prototype.n=1;
var b=new A();
A.prototype={n:2,m:3};
var c=new A();
console.log(b.n,b.m,c.n,c.m) // 1,undefined,2,3

b繼承了A,c繼承A的時候添加了n和m
undefined是一個表示“無”的原始值;null用來表示尚未存在的對象;

閉包

是能夠讀取其他函數內部變量的函數(函數a的內部函數b,被函數a之外的變量引用的時候就創建了閉包)

一般在什麼情況下使用:函數封裝,定時器;

閉包例子:

function a() {
	var i=0;
	function b(){
		i++;
		alert(i);
	}
	return b;
}
var c= a();
c();
輸出結果爲1,2,3

閉包的用處:讀取函數的局部變量;讓這些變量值始終保持在內存中。
閉包的優點:減少全局變量;減少傳遞函數的參數量;封裝。
閉包的缺點:使用閉包會佔有內存資源,過多的使用閉包可能會導致內存溢出等;

內存泄漏的解決方案:把那些不需要的變量,但是垃圾回收站又收不走的那些賦值爲null,然後讓垃圾回收走。

Ajax

Ajax是什麼?

是異步JavaScript和XML,是一種創建交互式網頁應用的網頁開發技術,能夠向服務器請求額外的數據而無須加載頁面,對網頁的某部分進行更新。

XMLHTTPRequest對象是什麼?

是Ajax的基礎;用於在後臺與服務器交換數據。

get和post請求

get:常用於向服務器查詢信息;
post:常用於向服務器發送應該被保存的數據;
post請求消耗的資源多,get請求速度是post的兩倍

創建一個Ajax

1.創建XMLHttpRequest對象(Ajax對象)
2.使用open方法設置和服務器的交互信息(建立服務器鏈接)
3.設置發送的數據,開始和服務器交互(發生請求)
4.註冊事件(建立Ajax事件)
5.更新界面(http responseText)

Ajax的優缺點

優點:減少服務器的負擔,按需取數據,最大程度的減少了冗餘請求;
局部刷新頁面,減少用戶心裏和實際的等待時間,帶來更好的用戶體驗;
進一步促進頁面和數據的分離;
缺點:編寫時需考慮瀏覽器的兼容性,因爲使用了大量js和Ajax的引擎;
對流媒體還有移動設備的支持性不太豪。

發佈了60 篇原創文章 · 獲贊 4 · 訪問量 3195
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章