JavaScript 基础知识 - 探讨物件

JavaScript 的物件结构,基本会是 {} 包覆 属性:值,如下:

var person = {    name: '小明',    members: {        father: '爸爸',        mother: '妈妈',        son: '小明'    },    callHome: function(){        console.log('回家了');    }};

而属性的值,也可以是另一个物件或者是 function

当我们要呼叫物件内的属性可以使用 .
person.name

如果是物件型别的属性,也可以接续下去
person.members.son

如果是一个 function
person.callHome()

而在物件内没有定义的属性,也可以直接透过 . 赋予值
person.room = 4
这时候在 console 看 person 这个物件,就会多了 room 这个属性

但是当要尝试去读取一个物件内没有的属性时,这时候就会出现 undefined
console.log(person.floor);
console 会出现 undefined

而又要尝试挂载属性跟值到 undefined 下面时,会出现什么呢 ?
person.floor.stair = 4;
这时候 console 会出现 Uncaught TypeError: Cannot set property 'stair' of undefined

除了新增属性,当然也可以删除属性
delete person.name
这时候在 console 查看 person 这个物件,就会发现 name 这个属性被移除掉了

而物件最大的特性就是传参考的特性,举个例子

var a = 1;var b = a;console.log(b);// 这时候 console 会出现 1 ,很符合预期

如果这时候修改了 b 把值改为 2,重新在 console 查看,a 会是 1,b 会是 2
这一切都很符合预期,a 和 b 之间互不影响,但这是在纯值的情况下

如果是在物件的情况下呢 ?

var person = {    name: '小名'};var person2 = person;person2.name = '大名';console.log(person.name);

这个时候会发现 person 的 name 属性也被修改了,但明明重新赋值的是 person2 的 name 属性,这就是物件的传参考的特性,因为 person 和 person2 都是指向同样的记忆体空间,并非是複製值到另外一个变数身上
可以用 === 来验证

console.log(person === person2);// true

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章