首页 > 代码库 > JS基本类型和引用类型的值
JS基本类型和引用类型的值
JS中可以把变量分成两部分,基本类型和引用类型。
基本类型比较简单,包括:Undefined、Null、Boolean、Number和String,基本类型值就是简单的数据段;引用类型值可能由多个值构成的对象。
引用类型值保存在内存中,而JS是不能直接访问内存的,所以对于引用类型,操作的不是实际的对象而是对象的引用。
注:string在ECMAScript中不是引用类型,和其他许多语言不同。
接下来主要说明引用类型值的一些问题。
1、动态属性。
JS中对象的属性可以动态的添加并且赋值的,比如:
var obj = new Object();obj.name = ‘zjzhome‘;console.log(obj.name) //zjzhome
但是基本类型不可以添加属性,虽然这样做不报错。
2、复制值
引用类型复制和简单类型不同,复制完成后新值和之前的值都是引用的同一个对象,所以之前的值改变,也会影响复制后的值,看个例子:
var obj1 = new Object()obj1.name = ‘zjzhome‘var obj2 = obj1console.log(obj2.name); //zjzhomeobj1.name = ‘zjz‘console.log(obj2.name) //zjz
3、函数传参
JS中所有函数传参都是按值传递的。
function setName(obj) { obj.name = ‘zjzhome‘}var person = new Object()setName(person)console.log(person.name) //zjzhome
看了上面的例子可能会觉得对象是按引用传递的,我们把例子修改一下:
function setName(obj) { obj.name = ‘zjzhome‘; obj = new Object(); obj.name = ‘zjz‘ }var person = new Object()setName(person)console.log(person.name) // zjzhome
person的值并没有因为obj的修改而改变,说明不是按引用传递的。如果是按引用传递的,obj和person指向同一个对象,当obj改变,person也会改变。
4、类型检测
typeof用于检测简单类型,对于对象,我们更想知道的是什么类型的对象。所以引进了instanceof操作符。
person instanceof Object 这样来检测person是不是Object。
person instanceof Array 这样来检测person是不是Array。
JS基本类型和引用类型的值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。