JavaScript起源和特性
原型鏈是借鑑了Self和Smalltalk語言,所以JavaScript天生原型設計模式。new的原理是找到對象,通過克隆創建一個一模一樣的對象,這裏根對象是Object.prototype對象,所有對象都是從Object.prototype對象克隆而來。
可以用ECMAScript 5提供的Object.getPrototypeOf來查看着兩個對象的原型
七種內置類型
- 空值(null)
- 未定義 (undefined)
- 布爾值 (boolean)
- 數字 (number)
- 字符串 (string)
- 對象 (object)
- 符號 (symbol ES6新增)
對於這些類型都比較常用,主要將下symbol,主要用於
Symbol 值通過Symbol函數生成。這就是說,對象的屬性名現在可以有兩種類型,一種是原來就有的字符串,另一種就是新增的 Symbol 類型。
- 定義對象屬性的迭代器,遍歷對象中的屬性值
- 使用symbol.toStringTag來定義對象的toString結果
- 消除魔術字符串,比如狀態變化是自己定義的幾個字符串,最後也是對字符串進行比對,這時就可用Symbol消除魔法字符串。
const shapeType = {
triangle: 'Triangle'
};
// 可以轉換成
const shapeType = {
triangle: Symbol()
};
function
function也是JavaScript的一個內置類型。是object的子類,有內部屬性Call,該屬性使其可以被調用。函數對象的length屬性是其聲明的參數個數
判斷數據類型
typeof
instanceof
使用constructor 和Object.toString
參考各種博客、《你不知道的JavaScript》、《JavaScript設計模式與開發實踐》