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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。