JavaScript中可以有两种类型的数据:原始数据和引用数据。原始数据包括:数字、字符串、布尔值、NaN、null和undefined。引用数据包括:对象、数组和函数。本文将讨论引用数据类型。
引用数据类型是JavaScript中最复杂、最强大的数据类型。引用数据类型是由多个原始数据类型组成,其中存储了一组值,可作为整体被调用。它们可以动态地增加、减少或者更改其中的项。
JavaScript中的数组就是一个典型的引用数据,例如:
let array1 = [1, 2, 3]; let array2 = array1; array1[0] = 0; console.log(array1); //输出[0, 2, 3] console.log(array2); //输出[0, 2, 3]
在此例子中,array2只是引用了array1,当改变了array1中的值时,array2也发生了变化。这就是因为array1和array2都指向同一个对象。
对象也是一个典型的引用数据类型,例如:
let person = {name: "Tom", age: 18}; let anotherPerson = person; person.age = 19; console.log(anotherPerson.age); //输出19
同样地,anotherPerson只是引用了person。改变person中的属性值时,anotherPerson也发生了变化。
引用数据类型还可以将对象视为一个对象图。例如,假设有一个产品对象,其中包含了不同的属性和方法。产品对象可以被视为由其他对象组成的对象图,例如:
let product = { name: "Apple iPhone", description: "Apple iPhone is great!", specs: { operatingSystem: "iOS", capacity: "64GB", color: "Black" }, price: function(){ return "1000 USD"; } };
在此例子中,product对象包含了一个specs对象,此对象又包含了多个属性。此外,product对象还包含了一个功能 - price函数。
在JavaScript中,引用数据类型的变量只是保存了一个指向内存地址的指针,而不是它们所包含的实际值。这也就意味着,修改该变量所引用的对象或者数组不会改变该变量本身的值。例如:
let person = {name: "Mary", age: 20}; let anotherPerson = person; person = {name: "Tom", age: 21}; console.log(anotherPerson.name); //输出Mary
在此例子中,首先将person对象赋值给anotherPerson,然后将另外一个对象{ name: "Tom",age:21 }赋值给person 。由于JavaScript中只是复制了person变量中保存的指针,因此anotherPerson变量不会随着person变量指向新对象而改变。所以,最后输出的是Mary。
引用数据在JavaScript中非常有用,但有时候也会引起问题。对于初学者来说,理解和掌握好引用数据是一个关键的学习阶段。