伯格学前端 2016-04-08 04:07 采纳率: 100%
浏览 1370
已采纳

javascript中基本类型和引用类型的关系是什么?

他们是谁包含谁的关系,还是相互独立的关系?
为什么说Number 对象是 Number 原始类型的引用类型?

  • 写回答

2条回答 默认 最新

  • lambda-fk 2016-04-08 06:12
    关注

    首先不要用面向对象的思考方式去看js
    因为js是偏向函数式语言的。
    因此所谓的基本类型和引用类型只是为了类比java等语言而来的东东。

    js中是函数当道,比如这个Number他实际上是一个函数名字,不是类型的概念。
    函数和普通的变量都是对象。(具有属性和方法的封装体)
    js中的“继承”是通过原型链完成的。
    基本类型就是这个链条的末端。如同一棵树的叶子节点。

    记住js中没有类型的概念。
    只有对象。
    这才是动态性的真谛。
    下面为了描述方便成为类型

    比如Number和 var a=3
    Number是函数名字,也是一个函数对象
    这个变量a所谓的“基本类型”就是从Number的原型来的
    Number.prototype

    所以基本类型就是 该变量对应的上层函数的prototype

    比如 数字123 它的类型是 Number.prototype
    字符串 他的类型是 String.prototype
    数组 他的类型是 Array.prototype

                等等。
    

    但是上面的Number,String等都是函数,不是类型哦

    下面的例子可以看出基本类型也可以有方法的所以不要用java的观点去看
    比如 a=123
    让a可以调用一个toString()方法打印出 [123]来
    使用nodejs平台进行试验:下面方法中的this就是我们的叶子的值,看到this你还认为他是简单的基本类型吗?

     Number.prototype.toString = function(){
        console.log("["+this+"]");
      }
        var a = 123;
        a.toString();
    

    从上面可以看出基本类型也是可以有方法的。
    可以通过原型来扩充方法
    那么他和所谓的引用类型又有多大的区别呢?

    记住一切都是函数
    这些常见的值都是函数生成的对象
    没有类型只说

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 Mac(标签-IDE|关键词-File) idea
  • ¥15 潜在扩散模型的Unet特征提取
  • ¥15 iscsi服务无法访问,如何解决?
  • ¥15 感应式传感器制作的感应式讯响器
  • ¥15 如何使用SC92F8003固件库解析私有协议数据?
  • ¥15 如何在音频中嵌入字符串(水印)信息进行传递
  • ¥30 plc怎么以设计说明书申请软著
  • ¥15 硬盘识别不了,需要初始化,可我的数据怎么办
  • ¥15 lvm2被mask了,怎么unmask都没用(标签-ubuntu|关键词-apt)