1. 深入對象
1.1 創建對象的三種方式
1.2 構造函數
語法約定:
總結
- 構造函數可以快速創建多個對象
- 大寫字母開頭的函數
- 使用new關鍵字將對象實例化
- 構造函數不需要返回值自動返回新的對象
new實例化的執行過程
- 創建空對象
- this指向對象
- 執行代碼,追加新的屬性
- 返回新對象
1.3 實例成員&靜態成員
實例成員
靜態成員
總結
- 實例對象的屬性和方法為實例成員
- 實例對象是相互獨立的,實例成員當前實例對象可以使用
- 構造函數的屬性和方法稱為靜態成員
- 靜態成員只能構造函數訪問
2. 內置構造函數
2.1 Object
三個常用靜態方法(只有Object可以調用)
1. Object.keys
2. Object.values
3. Object.assign
// 獲得所有屬性名console.log(Object.keys(o));// 獲得所有屬性值console.log(Object.values(o));// 對象的拷貝const oo = {}Object.assign(oo, o)console.log(oo);// 給對象追加新屬性Object.assign(o, { gender: '你爹' })
2.2 Array
2.2.1 數組常見實例方法
reduce方法
reduce執行過程
const arr = [1, 2, 3]// 無初始值情況const total = arr.reduce(function (prev, curr) {return prev + curr})console.log(total);// pre cur return for// 1 2 3 1// pre cur return for// 3 3 6 2// 有初始值情況const total = arr.reduce((pre, cur) => pre + cur, 10)console.log(total);// pre cur return for// 10 1 11 1// pre cur return for// 11 2 13 2// pre cur return for// 13 3 16 3
其他常見方法
const arr = [{name: 'mi',price: 20},{name: 'hw',price: 30}]//直接返回對應的對象console.log(arr.find(item => item.name === 'mi'));// every需要所有元素都滿足條件,則返回trueconsole.log(arr.every(item => item.price >= 20));// some只要有一個元素滿足條件,則返回trueconsole.log(arr.some(item => item.name === 'mi'));
2.2.2 偽數組轉換為真數組
靜態方法Array.from
const lis = document.querySelectorAll('li')console.log(lis);const liss = Array.from(lis)liss.pop()console.log(liss);
2.3 String
2.3.1 常見示例方法
substring
const str = '0123456'console.log(str.substring(1));//沒有第二個參數,直接取到最后一個console.log(str.substring(1, 4));//左閉右開
startsWith
const str = '0123456'console.log(str.startsWith('0'));//是否以參數開頭,結果返回布爾值console.log(str.startsWith('0', 2));//第二個參數代表在字符串中的起始位置
includes
const str = '我是你爹'console.log(str.includes('爹'));//在字符串中尋找是否含有要找的字符串console.log(str.includes('爹', 2));//第二個參數代表索引的起始位置
2.4 Number
// toFIxed讓數字保留指定小數位數const num = 1.222console.log(num.toFixed(1));const num1 = 10console.log(num1.toFixed(2));