捡起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的关系有点像鸡和鸡蛋的关系。(那就下一个笔记再来讨论)对象

相关文章
相关标签/搜索