ES6的原始类型数据——Symbol

javascript中原始值,即基本数据类型,像Number,String,Boolean,undefined,Null都是基本类型值,保存在栈中,但是有个疑问:

Symbol打印出来明明是个函数,具有prototype的属性,不能实例化的原因是:Symbol是个原始值。但Symbol明明就是个函数的鸭,而且:

Symbol.__proto__ === Function.prototype
//true

  Symbol.constructor === Function.prototype.constructor
  //true

  Object.prototype.toString.call(Symbol)
  //"[object Function]"

  typeof Symbol

  //"function"

  typeof Symbol()
  //"symbol"

Symbol的原型指向的就是Function的原型,Symbol明明就是Function的实例鸭。

其实JS中检测原始值的方法就是用typeof,那么typeof Symbol返回的就是function类型。typeof Symbol(),好嘛!!!返回symbol类型。

在Javascript中函数即对象,是引用类型,为啥Symbol就是原始值,即基本类型呢?

猜你喜欢

转载自www.cnblogs.com/tangjiao/p/10039659.html