js基本数据类型和引用类型有哪些,js的基本数据类型和引用数据类型

  js基本数据类型和引用类型有哪些,js的基本数据类型和引用数据类型

  本教程运行环境:windows7系统,javascript1.8.5版本1.8.5,戴尔G3电脑。

  数据类型是指可以在程序中存储和操作的值的类型。每种编程语言都有其支持的数据类型,不同的数据类型用于存储不同的数据,如文本、数值、图像等。

  JavaScript中的数据类型可以分为两种:

  基本数据类型(值类型):字符串(String)、数字(Number)、布尔、空、未定义、符号;

  引用数据类型:对象、数组、函数。

  

JavaScript引用数据类型

  

引用类型

  在ECMAScript中,引用类型是用于将数据和函数组织在一起的数据结构(通常也称为类)。

  引用的值是存储在内存(堆栈内存和堆内存)中的对象。JavaScript不允许直接访问内存中的位置,因此在操作对象时,它实际上是对被操作对象的引用,而不是实际的对象。引用类型的值是通过引用访问的。

  

Object类型

  创建对象实例有两种方法。第一种是使用new运算符,后跟对象构造函数,例如;

  var person=new Object();

  person.name= Nicholas

  person.age=29另一种方法是使用对象的文字表示。例如:

  var person={

  姓名:“尼古拉斯”,

  年龄;29

  }

Array类型

  创建数组有两种基本方法。第一种是使用数组构造函数,例如:

  var colors=new Array();第二种基本方法是使用数组文字表示。数组文本由一对包含数组项的方括号表示,多个数组项用逗号分隔,例如:

  var colors=[红色,蓝色,绿色];

检测数组

   instanceof运算符假设只有一个全局执行环境。为了只解决一个问题,ECMAScript 5添加了Array.isArray()方法。此方法的目的是最终确定一个值是否是数组,而不管它是在哪个全局执行环境中创建的。

  

转换方法

  

toLocaleString()、toString()和valueOf()方法

  所有对象都有toLocaeString()、toString()和valueOf()方法。

  调用数组的toString()方法将返回逗号分隔的字符串;

  调用toLocaleString()与toString()相同,但字符串对应的是执行环境的区域;

  调用valueOf()返回一个数组。

  

join()方法

   join()方法只接受一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串。

  

栈方法(后进先出)

   ECMAScript专门为数组提供了push()和pop()方法,以实现类似堆栈的行为。push()方法可以接受任意数量的参数,将它们逐个添加到数组的末尾,并返回修改后数组的长度。pop()方法从数组末尾的最后一项开始减小数组的长度,然后返回移除的项。

  

队列方法(先进先出)

   shift()可以移除数组中的第一项并返回,同时将数组的长度减少一。通过组合shift()和push()方法,可以像使用队列一样使用数组。

  ECMAScript还为数组提供了unshift()方法。顾名思义,unshift()与shift()相反:它可以在数组前面添加任意数量的项,并返回新数组的长度。

  

重排序方法

   reverse()方法反转数组项目的顺序。

  默认情况下,sort()方法按升序对数组项——进行排序,即最小值排在最前面,最大值排在最后。为了排序,sort()方法会用每个数组项的toString()对方法进行变换,然后比较得到的字符串来决定如何排序。这种排序方法在很多情况下并不是最佳解决方案,因此sort()方法可以接收一个比较函数作为参数,以确定哪个值在哪个值之前。

  

操作方法

   concat()方法可以基于当前数组中的所有项创建一个新数组。

  slice()方法可以基于当前数组中的一项或多项创建一个新数组。slice()方法可以接受一个或两个参数,即要返回的项目的开始和结束位置。(原始数组不会改变)

  splice()方法主要是在数组中间插入值。(删除、插入、替换)这个方法改变原始数组的值。

  

位置方法

   ECMAScript为数组实例添加了两种定位方法:indexOf()和lastindexOf()。这两种方法都返回要在数组中找到的项的位置,如果没有找到,则返回-1。两种方法都接受两个参数:要搜索的项目和指示搜索起点位置的索引(可选)。

  

迭代方法

   ECMAScript为数组定义了五种迭代方法:

  Every():对数组中的每一项运行给定的函数,如果函数对每一项返回true,则返回true。

  Filter():对数组中的每一项运行给定的函数,返回函数将返回为真的项的数组。

  ForEach():对数组中的每一项运行给定的函数。此方法没有返回值。

  Map():对数组中的每一项运行给定的函数,并返回由每个函数调用的结果组成的数组。

  Some():对数组中的每一项运行给定函数,如果函数对任一项返回true,则返回true。

  

归并方法

   ECMAScript 5还增加了两个合并数组的新方法:reduce()和reduceRight()。这两种方法都将遍历数组的所有项,然后构建一个最终返回值。

  使用reduce()和reduceRight()方法执行查找数组中所有值之和的操作,例如:

  var值=[1,2,3,4,5];

  var sum=values . reduce(function(prev,cur,index,array){

  返回上一个cur

  });

  警报(总和);//15

  

Date类型

  使用new运算符和date构造函数创建Date对象:

  var now=new Date();

  当在不传递参数的情况下调用Date构造函数时,新创建的对象会自动获取当前日期和时间。为了接受表示日期的字符串参数,ECMAScript提供了两种方法:Date.parse()和Date。UTC()。

  ECMAScript添加了Date.now()方法,该方法在调用此方法时返回代表日期和时间的毫秒数。

  

继承的方法

  日期类型还覆盖toLocaleString()、toString()和valueOf()方法。

  toLocaleString()方法将以适合浏览器的格式返回日期和时间,而toString()方法通常返回带有时区信息的日期和时间。至于valueOf()方法,它根本不返回字符串,而是日期的毫秒表示。

  

Function类型

  函数实际上是一个对象,函数名实际上是指向函数对象的指针,不会绑定到函数上。每个函数都是函数类型的一个实例,它和其他引用类型一样有属性和方法。

  函数通常使用函数声明语法来定义:(函数声明提升)

  函数sum (sum1,sum2) {

  返回sum1 sum2

  }使用函数表达式定义函数还有另一种方法:

  var sum=function(sum1,sum2) {

  返回sum1 sum2

  };注意:要在不执行函数的情况下访问函数指针,必须删除函数名后面的括号。

  

函数内部属性

  在函数内部,有两个特殊的对象:arguments和this。Arguments是一个类数组对象,包含传入函数中的所有参数。该对象有一个属性,该属性有一个指向拥有该arguments对象的函数的指针。这是指执行函数的环境对象。(当在网页的全局范围内调用函数时,该对象指的是窗口)

  

函数属性和方法

  

属性

  每个函数包含两个属性:长度和原型。

  length属性指示函数预期接收的命名参数的数量。

  对于ECMAScript中的引用类型,prototype是保存它们所有实例方法的真正地方。prototype属性是不可枚举的,因此使用for-in是无效的。

  

方法

  每个函数包含两个非继承方法:apply()和call()

  这两种方法的目的都是在特定的范围内调用一个函数,实际上相当于在函数体中设置这个对象的值。例子:1。传递参数;2.扩大了功能的范围。

  EAMAScript还定义了一个方法:bind()

  该方法将创建一个函数实例,其值将绑定到传递给bind()函数的值。

  每个函数继承的toLocaleString()、toString()和valueOf()方法总是返回函数的代码。

  

对象

  对象是特定引用类型的实例。新对象是使用new运算符后跟一个构造函数创建的。

  

new

   new运算符用于创建对象实例。这个对象可以是用户定义的,也可以是一些带有构造函数的系统自带的。如果新表达式后的构造函数返回的不是JavaScript的内置引用对象(object,String等。),new会创建一个匿名对象并返回;如果是内置引用对象或原始类型,匿名对象将被覆盖。(当没有返回时,实际上是未定义的返回的原始类型)

  

构造函数

  构造器本身是一个函数,只是它是为创建新对象而定义的。

  

JavaScript中object和Object的区别

  

object

  使用typeof检测数据类型时,只要被检查的变量是object或null,就会返回Object。

  

Object

  对象是JavaScript中的一个重要对象,其他对象都是基于它的,包括你创建的函数。

  

typeof 操作符和 instanceof 操作符的区别

   type of运算符可用于确定值的基本类型,而instanceof运算符可用于确定值的引用类型。

  

function和Function

   ECMAScript的功能实际上是一个全功能的对象。keyword函数用于创建所有对象的构造函数,或者使用关键字定义普通函数的类和对象。var a=new function(){}实际上是通过使用构造函数方法创建匿名对象的实例,而不是系统内置对象函数的实例。因此,instanceof函数返回false,typeof返回“object”。

  什么时候typeof返回"function"呢?

  函数a (){ }

  //未定义

  a的类型

  //函数【推荐学习:javascript高级教程】以上是javascript的引用数据类型是什么的详细介绍。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: