2 bogexueqianduan bogexueqianduan 于 2016.04.08 12:07 提问

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

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

3个回答

fk002008
fk002008   2016.04.08 14: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();

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

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

CSDNXIAON
CSDNXIAON   2016.04.08 12:11

javascript基本类型与引用类型
javascript基本类型与引用类型
javascript的基本类型和引用类型
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

qq_19891827
qq_19891827   2016.04.08 13:01

是相互独立的关系,js中变量分类为1.基本类型:变量的内容保存在变量的本地。2.引用类型:变量的内容不保存在变量的本地而是保存在内存的其他地方,变量中保存的是这个内存的地址的值。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
javascript 数据类型(基本类型和引用类型的定义和区别)
ECMAStript变量包含两种不同类型的值,基本类型和引用类型。引用类型和传统的面向对象程序设计中的类相似,但实现不同。
JavaScript基本类型和引用类型的值
JS变量可能包含两种不同数据类型的值;基本类型值和引用类型值。基本类型指的是简单的数据段,而引用类型值那些由多个值构成的对象; 在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。JS有5种基本数据类型:Undefined, Null,Boolean,Number和String。这5种基本数据类型是按值访问的。因为可以操作保存在变量中的实际的值。 引用类型的值保存在内存中的
JS基本类型和引用类型赋值的区别
基本类型包括:number,string,boolean,null,undefined 引用类型包括:Object,Array,Date,RegExp,Function 通过代码来看他们的区别: var a=2; var b=a; b=3; console.log(a);//2 console.log(b);//3 首先基本类型的赋值是
ES6-JS 基本类型和引用类型详解
https://segmentfault.com/a/1190000002789651
js中的基本类型和引用类型
js的基本类型有哪些?引用类型有哪些?  基本类型:Number,String,Boolean,Null,undefined。  引用类型:Object,Array,Date,RegExp,Function null和undefined的区别。  参考:http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html  一、相
深入解析js中基本数据类型与引用类型,函数参数传递的区别
ECMAScript的数据有两种类型:基本类型值和引用类型值,基本类型指的是简单的数据段,引用类型指的是可能由多个值构成的对象。 Undefined、Null、Boolean、Number和String是值类型,其他都是引用类型。其他语言String是以对象的形式表示,ECMAScript放弃了这一传统。内存中的存储区域值类型存储在栈中,引用类型存储在堆中。内存中是分为两个区域的,一个是栈:它就是专
JavaScript中的基本类型和引用类型的赋值问题和传参问题
我们先来看一个基本类型的例子:var num1 = 5; var num2 = num1;上面的num1属于基本类型,把num1赋值给num2,相当于把num1的一个副本赋值给num2,num2中的5和num1中的5是完全独立的,此后这两个变量可以参与任何操作而不会相互影响。如下图所是: 接着我们看看引用类型的例子:var obj1 = new Object(); var obj2 = obj1;
基本类型与引用类型
基本类型与引用类型
基本类型和引用类型的本质区别
java的基本数据类型和引用数据类型
javascript中数据类型和引用类型之间的区别
ECMAStript变量包含两种不同类型的值,基本类型和引用类型。 基本类型:指的就是保存在栈内存中的简单数据段。引用类型:指的是那些保存在堆内存中的对象,换句话说,就是变量名实际上是一个指针,而这个指针指向的位置,就是保存对象的位置。 两种不同的访问方式 基本类型:按值访问,操作的是它们实际的值。引用类型:按引用访问,当查询时,我们需要先从栈中读取内存地址,然后按照指针所指向的地方