js面向對象面試資料

 

js面向對象面試資料javascript

 

1 說說你對閉包的理解css

 

使用閉包主要是爲了設計私有的方法和變量。閉包的優勢是能夠避免全局變量的污染,缺點是閉包會常駐內存,會增大內存使用量,使用不當很容易形成內存泄露。前端

 

閉包有三個特性:java

 1.函數嵌套函數面試

 2.函數內部能夠引用外部的參數和變量瀏覽器

 3.參數和變量不會被垃圾回收機制回收緩存

 

二、call() 和 .apply() 的區別和做用?性能優化

 

做用:動態改變某個類的某個方法的運行環境。前端框架

一、call,apply都屬於Function.prototype的一個方法,它是JavaScript引擎內在實現的,由於屬於Function.prototype,因此每一個Function對象實例(就是每一個方法)都有call,apply屬性。既然做爲方法的屬性,那它們的使用就固然是針對方法的了,這兩個方法是容易混淆的,由於它們的做用同樣,只是使用方式不一樣。服務器

二、語法:foo.call(this, arg1,arg2,arg3) == foo.apply(this, arguments) == this.foo(arg1, arg2, arg3);

三、相同點:兩個方法產生的做用是徹底同樣的。

四、不一樣點:方法傳遞的參數不一樣。

 

三、javascript裏面的繼承怎麼實現,如何避免原型鏈上面的對象共享

 

用構造函數和原型鏈的混合模式去實現繼承,避免對象共享能夠參考經典的extend()函數,不少前端框架都有封裝的,就是用一個空函數當作中間變量

 

四、JavaScript原型,原型鏈 ? 有什麼特色?

 

原型對象也是普通的對象,是對象一個自帶隱式的 __proto__ 屬性,原型也有可能有本身的原型,若是一個原型對象的原型不爲null的話,咱們就稱之爲原型鏈。*

 原型鏈是由一些用來繼承和共享屬性的對象組成的(有限的)對象鏈。

 

五、你如何對網站的文件和資源進行優化

 

期待的解決方案包括:

 文件合併

 文件最小化/文件壓縮

 使用 CDN 託管

 緩存的使用(多個域名來提供緩存)

 其餘

 

 

六、請說出三種減小頁面加載時間的方法。

 1.優化圖片

 2.圖像格式的選擇(GIF:提供的顏色較少,可用在一些對顏色要求不高的地方)

 3.優化CSS(壓縮合並css,如margin-top,margin-left...)

 4.網址後加斜槓(如www.campr.com/目錄,會判斷這個「目錄是什麼文件類型,或者是目錄。)

 5.標明高度和寬度(若是瀏覽器沒有找到這兩個參數,它須要一邊下載圖片一邊計算大小,若是圖片不少,瀏覽器須要不斷地調整頁面。這不但影響速度,也影響瀏覽體驗。

當瀏覽器知道了高度和寬度參數後,即便圖片暫時沒法顯示,頁面上也會騰出圖片的空位,而後繼續加載後面的內容。從而加載時間快了,瀏覽體驗也更好了。)

6.減小http請求(合併文件,合併圖片)。

 

七、javascript繼承的6種方法

1,原型鏈繼承

2,借用構造函數繼承

3,組合繼承(原型+借用構造)

4,原型式繼承

5,寄生式繼承

6,寄生組合式繼承

 

javascript對象的幾種建立方式

1,工廠模式

2,構造函數模式

3,原型模式

4,混合構造函數和原型模式

5,動態原型模式

6,寄生構造函數模式

7,穩妥構造函數模式

 

八、你有哪些性能優化的方法?

(詳情請看雅虎14條性能優化原則)。

1) 減小http請求次數:CSS Sprites, JS、CSS源碼壓縮、圖片大小控制合適;網頁Gzip,CDN託管,data緩存 ,圖片服務器。

 

2) 前端模板 JS+數據,減小因爲HTML標籤致使的帶寬浪費,前端用變量保存AJAX請求結果,每次操做本地變量,不用請求,減小請求次數

 

3) 用innerHTML代替DOM操做,減小DOM操做次數,優化javascript性能。

 

4) 當須要設置的樣式不少時設置className而不是直接操做style。

 

5) 少用全局變量、緩存DOM節點查找的結果。減小IO讀取操做。

 

6) 避免使用CSS Expression(css表達式)又稱Dynamic properties(動態屬性)。

 

(7) 圖片預加載,將樣式表放在頂部,將腳本放在底部 ?加上時間戳。

 

9平時如何管理你的項目?

 1先期團隊必須肯定好全局樣式(globe.css),編碼模式(utf-8) 等;

 

 2 編寫習慣必須一致(例如都是採用繼承式的寫法,單樣式都寫成一行);

 

 3 標註樣式編寫人,各模塊都及時標註(標註關鍵樣式調用的地方);

 

 4 頁面進行標註(例如 頁面 模塊 開始和結束);

 

 5 CSS跟HTML 分文件夾並行存放,命名都得統一(例如style.css);

 

 6 JS 分文件夾存放 命名以該JS功能爲準的英文翻譯。

 

十、什麼是閉包,閉包什麼狀況會致使內存溢出?

直接來說,閉包就是可以讀取其餘函數內部變量的函數,在Javascript語言中,只有函數內部的子函數才能讀取局部變量,所以能夠把閉包簡單理解成"定義在一個函數內部的函數",因此,在本質上,閉包就是將函數內部和函數外部鏈接起來的一座橋樑。閉包最大用處有兩個,一個是能夠讀取函數內部的變量,另外一個就是讓這些變量的值始終保持在內存中。

閉包引發內存泄露的緣由有兩種:

1. 循環引用致使了內存泄漏

2. 由外部函數調用引發的內存泄漏

避免內存泄漏

1. 打破循環引用

2. 添加另外一個閉包

3. 避免閉包自身

解決閉包:用完直接==null;

相關文章
相關標籤/搜索