笔记:js高级程序设计第五章,函数的引用类型与基本类型
2016-10-24 15:50
417 查看
引用类型与基本包装类型的主要区别就是对象的生存期。使用 new 操作符创建的引用类型的实例,
在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一
行代码的执行瞬间,然后立即被销毁。这意味着我们不能在运行时为基本类型值添加属性和方法。来看
下面的例子:
var s1 = "some text";
s1.color = "red";
alert(s1.color); //undefined
在此,第二行代码试图为字符串 s1 添加一个 color 属性。但是,当第三行代码再次访问 s1 时,
其 color 属性不见了。问题的原因就是第二行创建的 String 对象在执行第三行代码时已经被销毁了。
第三行代码又创建自己的 String 对象,而该对象没有 color 属性。
当然,可以显式地调用 Boolean 、 Number 和 String 来创建基本包装类型的对象。不过,应该在
绝对必要的情况下再这样做,因为这种做法很容易让人分不清自己是在处理基本类型还是引用类型的
值。对基本包装类型的实例调用 typeof 会返回 "object" ,而且所有基本包装类型的对象都会被转换
为布尔值 true 。
在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一
行代码的执行瞬间,然后立即被销毁。这意味着我们不能在运行时为基本类型值添加属性和方法。来看
下面的例子:
var s1 = "some text";
s1.color = "red";
alert(s1.color); //undefined
在此,第二行代码试图为字符串 s1 添加一个 color 属性。但是,当第三行代码再次访问 s1 时,
其 color 属性不见了。问题的原因就是第二行创建的 String 对象在执行第三行代码时已经被销毁了。
第三行代码又创建自己的 String 对象,而该对象没有 color 属性。
当然,可以显式地调用 Boolean 、 Number 和 String 来创建基本包装类型的对象。不过,应该在
绝对必要的情况下再这样做,因为这种做法很容易让人分不清自己是在处理基本类型还是引用类型的
值。对基本包装类型的实例调用 typeof 会返回 "object" ,而且所有基本包装类型的对象都会被转换
为布尔值 true 。
相关文章推荐
- JS高级程序设计学习笔记之第三章基本概念(语法,数据类型,流控制语句,函数)——查漏补缺
- JavaScript高级程序设计学习笔记第五章--引用类型(函数部分)
- JavaScript高级程序设计第五章引用类型——基本包装类型
- js高级程序设计(第三版)总结——第五章引用类型(RegExp类和Function类)
- Javascript高级程序设计第二版第五章--引用类型--笔记
- javascript高级程序设计笔记-第五章(引用类型)
- Javascript高级程序设计第二版第五章--引用类型--笔记
- Javascript高级程序设计笔记 <第五章> 引用类型
- 读书笔记 - js高级程序设计 - 第五章 引用类型
- javascript高级程序设计第三版 第4章 基本类型和引用类型的值 学习笔记
- JavaScript高级程序设计之引用类型之基本包装类型第5.6讲笔记
- Javascript高级程序设计第二版第五章--引用类型--笔记
- JavaScript高级程序设计学习笔记第五章--引用类型
- JS高级程序设计笔记(五):引用类型
- javascript高级程序第三版学习笔记【基本类型和引用类型】
- JavaScript高级程序设计之引用类型之Object 类型第5.1讲敏敏笔记
- 一道js题(引用类型、基本类型、包装对象、函数赋值)
- javascript高级程序设计笔记(第5章 引用类型)
- JavaScript高级程序设计之引用类型之Array 类型第5.2讲笔记
- JavaScript 高级程序设计 第5章引用类型 笔记