撿起JavaScript(1)

JS原型介紹

原型的做用是什麼?

你們知道的JS不是面向對象的語言,就沒有面向對象的繼承的概念。那麼原型就是用來彌補JS繼承功能的。javascript

下面有三個思想須要明確

  • 在JavaScript世界中一切都是對象。
  • 一切對象都是由方法new出來的。
  • 全部的JavaScript的變量最終都會變成Null。
  • JavaScript修改任何數據,均可以爲所欲爲。

JavaScript的數據類型

分爲值類型和引用類型

值類型名 特別說明
number NaN
boolean
string
object null
function
undefined 默認初始化
symbol Symbol() ES6引入

一切引用類型都是Object

咱們都知道JS判斷類型有兩種typeof和instanceof,可是這兩個有什麼區別麼?

// 代碼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的關係有點像雞和雞蛋的關係。(那就下一個筆記再來討論)對象

相關文章
相關標籤/搜索