对js中的引用类型的理解(1)

原创 2015年11月18日 17:07:55

基本理解

引用类型是一种用于将数据和功能组织在一起的数据结构(也常被成为类),引用类型的值(对象)是引用类型的一个实例。


但是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时,访问过程处于一种读取模式,也就是从内存中读取这个字符串的值,而在读取模式中访问字符串时,后台都会自动完成以下处理:

  1. 创建String类型的一个实例
  2. 在实例上调用指定的方法
  3. 销毁这个实例
    经过处理,基本的字符串就变得跟对象一样了
    引用类型与基本包装类型的主要区别就是对象的生存期。使用new创建的引用类型实例,在执行流离开当前作用域之前都一直保存在内存中,而自动创建的基本包装类型的对象,只存在一行代码的执行瞬间,然后立即被销毁。这也意味着我们不能在运行时为基本类型值添加属性和方法

单体内置对象

单体内置对象是由ECMAScript实现提供的,不依赖宿主环境的对象,也就是开发人员不必显示地实例化内置对象,因为它们已经实例化了。如:Object、Array、String。
还有两个内置对象比较重要:Global和Math
实际上全局变量或全局函数是不存在的,所有在全局作用域中定义的属性和函数,都是Global对象的属性。如:parseInt(),parseFloat()都是Global对象的方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Javascript中引用的理解

在Javascript脚本中,参数的引用原则:引用的参数内部(如属性)可以修改,但参数对应的引用(reference)不能修改。 一个测试例子如下: //dosomething1,对于引用,变...

js栈内存和堆内存的区别

首先JavaScript中的变量分为基本类型和引用类型。基本类型就是保存在栈内存中的简单数据段,而引用类型指的是那些保存在堆内存中的对象。 1、基本类型           基本类型有Unde...

js--引用类型Array--1.Array的基础知识

1.检测数组value instanceof Array但若在两个以上不同的全局执行环境下,会存在两个以上版本的Array构造函数,当一个框架向另外一个框架传入数组时,传入的数组和第二个框架中原生创建...

js数据类型 ——引用类型(Array).1/3

一.创建数组 var arr = new Array(5)//5是长度,new可省略 var arr = new Array("one","two")或var arr = ["one","two"]...

js中的面向对象程序设计(1)-对象和属性的类型

js中的面向对象程序设计js中的对象:一组无序属性的结合。一、js中的对象1.自定义对象var person = new Object(); person.name = 'jack'; person....

原生JS学习笔记1——基本数据类型和运算符

原生JS学习笔记1——基本数据类型和运算符

JavaScript(1)__Js基础<数据类型,基本语法,运算符>

首先在学习之前,我们要了解web前端三层架构:(重点) 1:HTML:结构层:从语义的角度,去描述页面的结构 2:CSS:样式层:从审美的角度,去美化页面 3:JS:行为层:从交互的角度,去提升...

js--DOM--1.常用的节点类型

1.什么是DOMDOM(文档对象模型),是针对HTML和XML文档的一个API。描述了一个层次化的节点树,允许开发人员添加、移除和修改页面的某一部分。2.Node2.1节点类型只写几个此博文提到的: ...

js---javaScript 1、标识符、注释、变量、基本数据类型、运算符(演示实例)

学习javascript语言(语法) //1 标识符,关键字,分隔符---几乎和Java一样 //2 注释:只支持 //单行 和 /*多...

js的数据结构类型---json解析(1)

本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对js中的引用类型的理解(1)
举报原因:
原因补充:

(最多只允许输入30个字)