身爲一個兩年半經驗的前端,這些問題沒答出來其實還是蠻丟人的。
第一個問題:
原型鏈
這是js常見問題,其實也用過,但是因爲業務代碼需要用到的原型鏈的東西比較少,所以寫的比較少。然後當場面試官讓我隨便寫一個,一緊張,居然沒寫出來。(光是這個寫不出來,就應該被pass了)
寫一個簡單的原型繼承:
var a = function(){
this.name = "aaa";
};
a.prototype = {
getname : function(){
console.log(this.name);
}
};
var b = new a();
b.getname();//aaa;
通過給a.prototype設置了一個函數對象的屬性,那有a實例(例中:b)出來的普通對象就繼承了這個屬性。具體是怎麼實現的繼承,就要講到下面的原型鏈了。
JS在創建對象(不論是普通對象還是函數對象)的時候,都有一個叫做__proto__的內置屬性,用於指向創建它的函數對象的原型對象prototype。
console.log(b.__proto__ === a.prototype) //true
b的原型鏈指向a的原型對象,因此,b可以繼承a的屬性。
簡單點說,這就是原型鏈。
JS一直強調萬物皆對象,函數對象也是對象,給他認個祖宗,指向Object.prototype。Object.prototype.__proto__ === null,保證原型鏈能夠正常結束。(這句是抄來的,萬物皆對象,null生萬物)。
第二個問題:
vue{}閃現
(這就不是個問題,看過vue的,全世界的前端,估計就我一個貨不記得。)
重點是我用vue單獨開發過一個項目,這項目一直在線上,還沒被發現過bug。
其實就一個指令 v-cloak
[v-cloak] { display: none; }
angular的是ng-cloak;
第三個問題:
jquery on 和bind的區別
這個不屬於冷門知識,但是看過也沒有特別去記,加上現在就算用jq也基本都用on了。
jquery文檔中bind和on函數綁定事件的用法:
.bind(events [,eventData], handler)
.on(events [,selector] [,data], handler)
可以看出,參數是不同的,on多出一個"selector",那麼他們在綁定事件的時候就有了一個最大的區別:bind只能爲當前已有的元素綁定事件,而動態添加的元素是綁不上的。但是on是都可以的。
第四個問題:
頁面被高併發訪問時,怎麼處理js,css,圖片的。
前端設計的時候css js等要可以複用,尤其是js,頁面佈局用到的小圖標等儘量用雪碧。
css壓縮,js壓縮,圖片懶加載。
問題都很簡單,沒答出來也確實很low比。
以前不注意總結,現在要開始寫下來了,用上用不上,碰上寫下來總是有好處的。望各位打算入坑的朋友有這個覺悟。