你們知道的JS不是面向對象的語言,就沒有面向對象的繼承的概念。那麼原型就是用來彌補JS繼承功能的。javascript
值類型名 | 特別說明 |
---|---|
number | NaN |
boolean | |
string | |
object | null |
function | |
undefined | 默認初始化 |
symbol | Symbol() ES6引入 |
一切引用類型都是Object
// 代碼1 console.log(typeof(x)); // undefined console.log(typeof(10)); // number console.log(typeof('abc')); // string console.log(typeof(true)); // boolean console.log(typeof(function () { })); //function console.log(typeof([1, 'a', true])); //object console.log(typeof ({ a: 10, b: 20 })); //object console.log(typeof (null)); //object console.log(typeof (new Number(10))); //object
// 代碼2 function ABC() {} var abc = new ABC() console.log(abc instanceof ABC) //true console.log(abc instanceof Object) //true console.log(ABC instanceof Function) //true console.log(ABC instanceof Object) //true console.log(Function instanceof Object) //true console.log(abc instanceof Function) //false console.log(Object instanceof Function) //true
由代碼1和代碼2可知:
typeof是用來判斷值類型,
instanceof是用來追尋祖宗血脈的。java
原本看着代碼2,能夠尋跡這一條線,用來理清JavaScript對象的實例關係。
abc -> ABC -> Function -> Object -> Function ? 怎麼最後出現循環實例化鏈?這不是要死循環?code
其實,Function和Object的關係有點像雞和雞蛋的關係。(那就下一個筆記再來討論)對象