- 事件綁定和普通事件有什麼區別
普通添加事件的方法:
var btn = document.getElementById("hello");
btn.onclick = function(){
alert(1);
}
btn.onclick = function(){
alert(2);
}
執行上面的代碼只會alert 2
事件綁定方式添加事件:
var btn = document.getElementById("hello");
btn.addEventListener("click",function(){
alert(1);
},false);
btn.addEventListener("click",function(){
alert(2);
},false);
執行上面的代碼會先alert 1 再 alert 2
小結:普通事件中的onclick是DOM0級事件只支持單個事件,會被其他onclick事件覆蓋,而事件綁定中的addEventListener是DOM2級事件可以添加多個事件而不用擔心被覆蓋
- 如何阻止事件冒泡和事件默認行爲
阻止冒泡:stopPropagation()
阻止默認:preventDefault()
-
window.onload 和document ready的區別
$(document).ready:是DOM結構繪製完畢後就執行,不必等到加載完畢。 意思就是DOM樹加載完畢,就執行,不必等到頁面中圖片或其他外部文件都加載完畢。 並且可以寫多個.ready。 window.onload:是頁面所有元素都加載完畢,包括圖片等所有元素。只能執行一次。
-
= = 和===的不同
= =是判斷值是否相等,= = =是判斷值及類型是否完全相等。 -
JavaScript是一門什麼樣的語言,它有哪些特點?
一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型 特點:1.簡單性 2.動態性 3.跨平臺性 4.安全性
-
JavaScript的數據類型都有什麼?
1. 字符串類型 (string)
2. 數值類型 (Number)
3. 對象類型 (object)
4. 布爾類型 (boolean)
5. 空類型 (null)
6. 未定義類型 (undefined)
-
談談對this的理解
this表示當前對象,而它的指向是根據上下文來決定的,默認指向window對象 在這把它分爲兩類: 全局和局部 在全局中指向的對象只有window對象 在局部中,對象調用指向對象,構造函數中指向實例化對象
-
js繼承方式及其優缺點
1.原型鏈繼承 優點:簡單,易於實現。 缺點: 創建子類實例時,無法向父類構造函數傳參 2.構造函數繼承 優點: 解決了子類實例共享父類引用屬性的問題; 創建子類實例時,可以向父類構造函數傳參; 可以實現多繼承(call多個父類對象); 缺點: 只能繼承父類的實例屬性和方法,不能繼承父類原型屬性和方法 使用多後佔用內存過大 3.組合繼承 優點: 函數可複用; 可以繼承實例屬性/方法,也可以繼承原型屬性/方法; 既是子類的實例,也是父類的實例; 不存在引用屬性共享問題; 缺點:內存浪費
-
同步和異步的區別?
同步,是所有的操作都做完,才返回給用戶結果。即寫完數據庫之後,在相應用戶,用戶體驗不好。 異步,不用等所有操作等做完,就相應用戶請求。即先相應用戶請求,然後慢慢去寫數據庫,用戶體驗較好。
-
箭頭函數
(a,b,c)==>{x} 型如這樣的函數就是箭頭函數
同等與:
function(a,b,c){
x;
}
注意:
箭頭函數與普通函數並不完全相等, 箭頭函數並沒有自己的this關鍵字,對於普通函數的this指創建的對象, 直接調用的普通函數this代表window
箭頭函數的this指的是上下文, 也就是包含箭頭函數的外層函數, 如果箭頭函數定義在全局範圍內this指window本身
箭頭函數不允許在形參列表和箭頭之間換行,否則報語法錯誤
箭頭函數與其他運算符在一起時, 可能由於解析順序導致錯誤, 因而與其他運算符在一起時應該把箭頭函數整體放在圓括號裏