1.閉包是什么,有什么特性,對頁面有什么影響
閉包就是能夠讀取其他函式內部變數的函式,
閉包的缺點:濫用閉包函式會造成記憶體泄露,因為閉包中參考到的包裹函式中定義的變數都永遠不會被釋放,所以我們應該在必要的時候,及時釋放這個閉包函式
2.什么是作用域?
分為倆種一種是函式區域作用域,一種是全域作用域,
定義一個函式就開辟了一個區域作用域,整個 js 執行環境有一個全域作用
3.事件委托是什么
利用事件冒泡的原理,讓自己的所觸發的事件,讓他的父元素代替執行
優點:
(1)可以大量節省記憶體占用,減少事件注冊
(2)可以實作當新增子物件時無需再次對其系結事件,對于動態內容部分尤為合適
缺點:
如果全部都使用委托,容易產生事件誤判
4.事件冒泡的原理
事件從dom 樹的底層 層層往上傳遞,直至傳遞到dom的根節點就叫事件冒泡,
5.如何阻止事件冒泡及默認事件?
e. stopPropagation();//阻止事件冒泡
e. stopPropagation();//阻止默認事件
6.Javascript 如何實作繼承?
原型鏈繼承
function SuperType () {
this.property = true
}
SuperType.prototype.getSuperValue = function () {
return this.property
}
function SubType () {
this.subproperty = false
}
// 繼承了SuperType //
SubType.prototype = new SuperType()
SubType.protype.getSubValue = function () {
return this.subproperty
}
var instance = new SubType()
建構式繼承
function SuperType () {
this.colors = ["red", "blue", "green"]
}
function SubType () {
// 繼承了SuperType
SuperType.call(this)
// 只能繼承建構式上的屬性
}
組合繼承,寄生式繼承,寄生組合繼承
7.把 Script 標簽 放在頁面的最底部的 body 封閉之前 和封閉之后有什么區 別?瀏覽器會如何決議它們?
如果說放在 body 的封閉之前,將會阻塞其他資源的加載
如果放在 body 封閉之后,不會影響 body 內元素的加載
8.、解釋 jsonp 的原理
通過動態創建script標簽,來請求服務端的檔案,這檔案回傳結果是一段js代碼,
作用:呼叫我們之前定義好的函式,從而將服務端的資料發送給客戶端, 使用jsonp時:
1. 每次都需要不同的函式名
2. 通過url傳輸到后臺
9.javascript 中的垃圾回識訓制?
在 Javascript 中,如果一個物件不再被參考,那么這個物件就會被 GC 回收,如果兩個物件互相參考,而不再 被第 3 者所參考,那么這兩個互相參考的 物件也會被回收,因為函式 a 被 b 參考,b 又被 a 外的 c 參考,這就是為什么 函式 a
執行后不會被回收的原因
10.JavaScript 執行程序
JavaScript 運行分為兩個階段:
- 預決議
- 全域預決議(所有變數和函式宣告都會提前;同名的函式和變數函式的優先級高)
- 函式內部預決議(所有的變數、函式和形參都會參與預決議)
- 函式
- 形參
- 普通變數
- 執行
先預決議全域作用域,然后執行全域作用域中的代碼,
在執行全域代碼的程序中遇到函式呼叫就會先進行函式預決議,然后再執行函式內代碼,
11. 什么是面向物件
面向物件不是新的東西,它只是程序式代碼的一種高度封裝,目的在于提高代碼的開發效率和可維 護性,
面向物件的特性:
1. 封裝性
2.繼承性
3.[多型性]抽象
12.深拷貝和淺拷貝
深拷貝:當一個物件保存的是另一個物件的參考時,改變其中一個,源物件不會改變,
淺拷貝:一個物件復制另外一個物件,改變其中一個,原物件屬性也會被跟著改變,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/290295.html
標籤:其他
