对js中的引用类型的理解(1)
来源:互联网 发布:如何推广淘宝店铺 编辑:程序博客网 时间:2024/06/07 00:56
- 基本理解
- js原生引用类型
- Object类型
- Array类型
- Date类型
- RegExp类型
- Function类型
- 基本包装类型
- 单体内置对象
基本理解
引用类型是一种用于将数据和功能组织在一起的数据结构(也常被成为类),引用类型的值(对象)是引用类型的一个实例。
但是js中没有类的概念,因此引用类型也可以被称为对象定义,因为他们描述的是一类对象所具有的属性和方法。
对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数来创建的,构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的。
ECMAScript提供了很多原生引用类型(如:Object),以便开发人员用以实现常见的计算任务
js原生引用类型
Object类型
我们看到的大部分引用类型都是Object类型的实例,Object的实例本身不具备很多功能,单对于在应用程序中存储和传输数据而言,是非常理想的选择。
Array类型
除了Object之外,Array算是js最常用最常用的类型。js中的数组与其他语言的数组都是数据的有序列表,但是,数组的每一项可以保存任何类型的数据
Date类型
js中用于构建日期对象的引用类型
RegExp类型
js通过RegExp类型来支持正则表达式
Function类型
js中的函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。如:
function sum(num1,num2){ return num1 + num2; }
这与使用函数表达式定义函数的方法几乎相差无几:
var sum = function(num1,num2){ return num1 + num2;}
基本包装类型
为了便于操作基本数据类型值,js还提供了3个特殊的引用类型:Boolean、Number、String。这些类型与其他引用类型相似,但有与各自的基本数据类型相应的特殊行为。
注意:
实际上,每当读取一个基本类型的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们可以能够调用一些方法来操作这些数据,如:
var s1 = "hello,world";var s2 = s1.substring(2);
尽管如我们所愿,基本类型调用了方法,但是基本类型不是对象,因而从逻辑上讲他们不应该具有方法。
其实,为了实现这种直观的操作,后台已经自动完成了一系列的处理。当第二行代码访问s1时,访问过程处于一种读取模式,也就是从内存中读取这个字符串的值,而在读取模式中访问字符串时,后台都会自动完成以下处理:
- 创建String类型的一个实例
- 在实例上调用指定的方法
- 销毁这个实例
经过处理,基本的字符串就变得跟对象一样了
引用类型与基本包装类型的主要区别就是对象的生存期。使用new创建的引用类型实例,在执行流离开当前作用域之前都一直保存在内存中,而自动创建的基本包装类型的对象,只存在一行代码的执行瞬间,然后立即被销毁。这也意味着我们不能在运行时为基本类型值添加属性和方法
单体内置对象
单体内置对象是由ECMAScript实现提供的,不依赖宿主环境的对象,也就是开发人员不必显示地实例化内置对象,因为它们已经实例化了。如:Object、Array、String。
还有两个内置对象比较重要:Global和Math
实际上全局变量或全局函数是不存在的,所有在全局作用域中定义的属性和函数,都是Global对象的属性。如:parseInt(),parseFloat()都是Global对象的方法。
- 对js中的引用类型的理解(1)
- 对js中的引用类型的理解(2)——Object类型
- 对js中的引用类型的理解(3)——Array类型
- 对js中的引用类型的理解(4)——Function类型
- 对js中的引用类型的理解(5)——Date类型
- 对js中的引用类型的理解(6)——基本包装类型(Booelean、Number、String)
- 对引用类型 dynamic 的理解
- 理解js中的基本类型和引用类型
- js中的引用类型
- 对值类型和引用类型的理解
- JS参数理解(基本类型和引用类型)
- 对javascript中的检测类型的理解
- 理解Android中的引用类型
- 理解Android中的引用类型
- 对Java中引用、对象、基本类型等的理解
- 对JS中的prototype的理解
- JS的引用类型
- 对指针、引用的理解(一)
- MFC窗口的部分展开与收缩按钮响应函数
- mysql 主从复制
- ROS 学习系列 -- 执行turtlebot navigation的方法
- What are the meaning of the items in the “alignment trap” error message?
- 国足 0:0 香港
- 对js中的引用类型的理解(1)
- EdgeInsets Button
- C语言的按位与、或、非、异或 左移右移
- 图--知原理真题
- 【南大软院大神养成计划】结构与表现相分离思想
- Python刷题笔记(3)- 16进制和ascii码互转
- 填坑-浏览器-0
- redis 主从复制
- Android过渡动画之进入退出