101、請簡述prototype、__proto__ constructor三者的關係
1、prototype:
每乙個函式都有乙個prototype這個屬性,而這個屬性指向乙個物件,這個物件我們叫做原型物件
作用:a、節約記憶體
b、擴充套件屬性和方法
c、可以實現類之間的繼承
2、__proto__
1、每乙個物件都有乙個__proto__屬性
2、__proto__指向建立自己的那個建構函式的原型物件
3、物件可以直接訪問__proto__裡面的屬性和方法
3、constructor:
指向建立自己的那個建構函式
總結:當我們建立乙個建構函式的時候這個建構函式自帶了乙個prototype屬性,而這個屬性指向乙個物件,也就是原型物件。
這個原型物件裡面有乙個constructor構造器,它的作用是指向建立自己的建構函式。除此之外prototype還可以存放公共的屬性和方法。
當我們例項化乙個物件的時候,這個物件自帶了乙個__proto__屬性,這個__proto__指向建立自己的建構函式的原型物件。可以使用這個原型物件裡面的屬性和方法
102、請寫出方法繼承的方式
2、原型物件繼承
3、原型拷貝繼承
4、原型鏈繼承
5、混合繼承
6、繼承繼承
7、es6 class super()
注意:以上方法用**表示 不允許寫文字
bind:bind繫結完this的指向後會返回乙個新的函式體,不會被立即呼叫
call:第乙個引數是this的指向,第二個以及後面的所有引數需要乙個個進行傳遞
104、請解釋一下什麼叫同源策略,以及為什麼瀏覽器會有同源策略
同源策略是瀏覽器的乙個安全功能,不同源的客戶端在沒有授權的情況下,不能讀取對方資源
為了保障資料的安全,即非同源網頁不可請求
105、什麼是閉包?用途?注意的地方?
1、閉包就是可以讀取其他函式內部變數的函式
2、可以讀取函式內部的區域性變數 2、讓這些變數始終保持在記憶體當中
3、由於閉包會使得函式中的變數都被儲存在記憶體當中,記憶體會消耗很大,所以不能夠濫用閉包,否則會造成網頁效能的問題
106、設計模式(**自己完善)
1、單例模式:
保證程式中,使用該模式的類只有乙個例項
**....
2、**模式:
**....
3、觀察者模式:
某個人--->觀察某件事件---》事情發生變化---》通知這個人---》去做某件事情
**....
107、什麼是預載入&&懶載入
懶載入:
當訪問乙個頁面的時候,先把img元素或是其他元素的背景路徑替換成一張大小為1*1px的路徑(這樣就只需請求一次,俗稱佔位圖),只有當出現在瀏覽器的可視區域內時,才設定正真的路徑,讓顯示出來。這就是懶載入。
實現原理:
1、將位址放在元素的自定義屬性中
2、當頁面載入完成後,根據scrolltop判斷是否在使用者的視野內,如果在就取出屬性值放到src屬性中
預載入:
原生js大總結十
91 ajax的優點 a 提高執行效率 b 提高使用者體驗,讓多件事情同時發生 c 在不重新整理頁面的情況下可以對區域性資料進行載入和重新整理 92 ajax請求的流程 1 建立通訊物件 a ie7及其以上版本中支援原生的 xhr 物件,因此可以直接使用 b ie6及其之前版本中,xhr物件是通過m...
原生js大總結五
041 在js中如何用方法將10進製的字元轉換成16進製制和8進製 數字.tostring 16 數字.tostring 8 042 如何建立時間物件 new date 043 如何建立未來或者過去的時間物件 var d new date 2017 10 20 22 22 22 var d new ...
原生js總結 乾貨
1.js基本資料型別 number string boolean underfined null 2.查詢文件中的特定元素 document.getelementbyid id document.getelementbytagname div document.getelementbyclassna...