JavaScript中值类型与引用类型实例说明

复制代码 代码如下:

  <script type="text/javascript">

  var str = 'abced';

  var obj = new String(str);

  function newToString() {

  return 'hello,world';

  }

  function func(val) {

  val.toString = newToString;

  }

  func(str); //ps:实际只传入了str的值,因此对它的toString修改是无意义的 传入的str相当于是他的一个副本 修改副本的方法 不影响原来的运算结果

  alert(str.toString()); //结果为 abced

  func(obj); //ps:传入了一个对象的引用(即str本身,或者说是内存地址),因此对它的toString修改将会影响到后来 alert(obj.toString()) 的云寻

  alert(obj.toString()); //结果为 hello,world

  </script>

  

  附:

  JavaScript中的值类型与引用类型

  数据类型         值/引用类型         备注

  undefined       值                     无值

  number          值

  boolean          值

  string             值                    字符串在赋值运算中会按引用类型的方式来处理

  function          引

  object             引

  js的值类型和引用类型

  

   [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  值类型的变量直接保存变量值;引用变量却持有的引用(可比较c/c++的指针,一把"钥匙"),通过引用可以迅速找到存储内容的内存区域。

  值类型一般是一些固定的字节大小的;引用类型往往存储数组,对象,函数这些实现很难知道占据内存大小的量。

  

   [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  介于2中类型之间的特殊的字符串类型:

  

   [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  每次建立一个新字符串-----不变对象。

  补充:像"hello"这种字符串,当没有变量引用它时(也就是引用计数为0),该到了垃圾回收的时候啦*-*