美文网首页
「JavaScript」 我所理解的类型

「JavaScript」 我所理解的类型

作者: 老邵 | 来源:发表于2019-05-07 19:56 被阅读0次

    1.七种语言类型

    js 中有七种语言类型,分别是 Undefined、Null、Number、String、Boolean、Symbol、Object。这七种类型可以分为两类,简单数据类型(基本数据类型)和复杂数据类型。Object 是复杂数据类型,其余六种类型为简单数据类型。

    2.Object 类型的子类型

    js 中还有一些类型归属于 Object 类型,它们可以称为 Object 的子类型,比如 Object、Function、Number、String、Array、Boolean、Regexp、Date、Error。

    之所以称这些类型为「Object 的子类型」,是因为与这些类型对应的实例是具有属性和方法的对象。

    比如 typeof new String(),得到的结果是 object。再比如对 new Number() 或 new Function() 产生的对象使用 Object.prototype.toString.call(产生的对象) 方法,得到的结果分别是 [object Array] 和 [object Function]。

    3. 内建函数与内置对象

    Array 是 js 中的内建函数(或原生函数),使用 Array() 可以构造 Array 类型的实例。同样,对象的每一种子类型都有自己的内建函数,使用 new 都可以产生自己的实例(ps:Symbol 类型行为不同)。

    js 中的内置对象与内建函数是同一种东西。这个可以验证,利用Object. prototype.
    toString.call(),测得 Object、Array 等的结果都是 [object Function]。

    至于对象子类型间的继承关系,这涉及到原型链的知识,我会在另一篇文章中讨论。


    知识理解的不同

    在《JavaScript高级程序设计》中将 Object 的子类型定义为引用类型,有人也将这些类型叫做运行时类型。在我看来这些不同的名称源于不同的理解方式。

    其实同一种知识,不同的人理解起来常常有一些不同。这些不同有时候并没有对错之分,只是知识的不同角度的诠释。就像同一片星空,在每个人的眼中却是不同的景色。

    James Harris 2017-01-20 08-48-05 .jpg

    相关文章

      网友评论

          本文标题:「JavaScript」 我所理解的类型

          本文链接:https://www.haomeiwen.com/subject/spqyoqtx.html