1.理解事件原理。
首先什麼是事件,事件就是事件是使用者或瀏覽器自身執行的某種動作,如click,load和mouseover都是事件的名字。 那麼什麼是DOM事件流,事件發生時會在元素節點與根節點之間按照特定的順序傳播,路徑所經過的所有節點都會收到該事件,這個傳播過程即DOM事件流。 DOM2級事件規定事件流包括三個階段:事件捕獲階段,處於目標階段,事件冒泡階段; 在事件監聽流中可以使用event.stopPropagation()來阻止事件繼續往下流
2.ES6
(1)let和const的異同點
相同點:let和const只在宣告所在的塊級作用域內有效;不提升,同時存在暫時性死區,只能在宣告的位置後面使用;不可重複宣告;
不同點:let宣告的是變數;const宣告的是常量。
複製程式碼
(2)箭頭函式 ()=>
箭頭函式沒有函式提升
箭頭函式沒有this,他會捕獲其所在上下文的this值,作為自己的this值
箭頭函式不繫結arguments,取而代之用rest引數
箭頭函式不能作為建構函式,不能被new,沒有property
call和apply方法只有引數,沒有作用域
複製程式碼
(3)模板字串 使用反引號``,模板字串中的變數使用${}處理;
const a = `hello+${memory.data}`
複製程式碼
(4)解析結構
// 首先有這麼一個物件
複製程式碼
const props = { className: 'tiger-button', loading: false, clicked: true, disabled: 'disabled' }
// es5
複製程式碼
var loading = props.loading;
var clicked = props.clicked;
// es6解析結構寫法
複製程式碼
const { loading, clicked } = props;
// 給一個預設值,當props物件中找不到loading時,loading就等於該預設值
複製程式碼
const { loading = false, clicked } = props;
//陣列也有自己的解析結構
// es6
複製程式碼
const arr = [1, 2, 3];
const [a, b, c] = arr;
// es5
複製程式碼
var arr = [1, 2, 3];
var a = arr[0];
var b = arr[1];
var c = arr[2];
3.js中split,map,join方法
string.split()方法用於將字串分割為字串陣列
“hello”.split("") === ["h", "e", "l", "l", "o"]
map()方法生成一個新的陣列,arr.map(方法),原陣列通過map括號中提供的方式生成新的陣列,此方法不改變原陣列
var data = [1, 2, 3, 4];
var newData = data.map(function(i){return i*i});
console.log(newData); // [1,4,9,16]
join()方法用於將陣列中的元素放到一個字串中
["h", "e", "l", "l", "o"].join('') === 'hello'
複製程式碼
4.Cookie,sessionStorage,localStorage的異同點
共同點:都儲存在瀏覽器端,同源
不同點: a.cookie在瀏覽器和伺服器之間來回傳輸;sessionStorage,localStorage僅在本地儲存,不會自動把資料傳送給伺服器;
b.儲存大小限制不同,cookie不超過4k,sessionStorage,localStorage可以達到5M或更大
c.資料有效期不同,cookie在設定的過期時間之前有效;sessionStorage僅在當前瀏覽器關閉之前有效;localStorage始終有效,視窗或瀏覽器關閉也一直儲存,因此用作持久資料
d.作用域不同:sessionStorage不在不同的瀏覽器視窗中共享,即使是同一個頁面;localstorage在所有同源視窗中都是共享的;cookie也是在所有同源視窗中都是共享的
複製程式碼
5.如何獲悉一個物件的具體型別
typeOf,instanceof,contructor
複製程式碼
6.js中的prototype屬性
原型屬性prototype使得您有能力向物件新增屬性和方法
對於原型來說,最重要的一點是理解它的‘實時’性。由於js中,幾乎所有的物件都是通
過引用的方式傳遞的,因此我們所建立的每個新物件實體中並沒有一份屬於自己的原型副本,這也就意味著
我們可以隨時修改prototype屬性,並且由同一構造器建立的所有物件的prototype屬性也都會
同時改變(甚至會影響在修改之前就已經建立的那些物件)複製程式碼