javascript百炼成仙 第一章 掌握JavaScript基础1.7 对象数据类型

简介: javascript百炼成仙 第一章 掌握JavaScript基础1.7 对象数据类型

听到这句话,叶小凡一顿,动作停止了下来。


对象数据类型,这在JavaScript基础修炼要诀中只是提了一下,但是并没有细讲,这个对象数据类型一直以来都深深地勾起了叶小凡的好奇心。


“小娃娃,相见是缘,既然你感兴趣我便教你一教。你且听好,在JavaScript中,数据可分为两类,分别为原生数据类型和对象数据类型。所谓对象数据类型,是一种复合型的数据类型。它可以把多个数据放到一起,就好像一个篮子一样。在这个篮子里面的每一个数据,可以看做是一个单元,他们都有自己的名字和值。”


叶小凡被叶老的话深深地打动了,立刻聚精会神地听起来。


“现在你相信了,我可还是妖怪?”


叶小凡嘿嘿一笑,重新把戒指戴好。


“小娃娃,你叫什么?”


“叶小凡!”


“嗯,老夫姓叶你也姓叶,确实有缘。小娃娃,我且问你,你可愿意拜我为师?”


“弟子愿意!”


说完,叶小凡将戒指摘下放在身前的岩石之上,开始行拜师之礼。叶老虽然没有形体,但是却能看到一清二楚,待所有礼节完毕,叶老这才满意地点了点头。


“很好,小娃娃,你可听好。对象数据类型比起原生的数据类型可以说是强大了不少,原生数据类型,比如数值型,浮点型,boolean类型等,都是只能存放一些直接量,也就是说,单一的数据。而对象类型却是可以存放一大堆数据的集合。这些数据都有自己的名字,比如…”


忽然,叶小凡心头一亮,感觉有一种清晰的画面传来。


“我现在没有形体,但是却可以用意念来给你做演示,小娃娃,你且看好。现在我给你创建一个对象。”

var container = {}; 

“创建对象就是用一个大括号吗?”

“这是创建对象的一种方式,也是最常用的方式。创建对象以后,你就相当于开辟了一块内存,对象包含若干的数据。每一个数据都有自己的名字和值。对象好比是一个容器,现在我在这个容器里面放一个数据,你且看好!”

var container = {
  caoyao : "草药"
}; 

“小娃娃,你可有看明白?”


“前辈,您刚才说对象数据类型里面可以放若干个数据,那现在里面是不是有一个数据。数据的名字叫做caoyao,值是字符串类型的草药?”。叶小凡两眼放光,回答道。


“嗯,小娃娃,看来你的悟性还可以。在这个例子中,caoyao也叫作键,草药叫做值。它是一种键值对的形式。”叶老哈哈大笑。


“键值对,键值对。一个键对应一个值,一个键和一个值就凑成了一对。键和值中间用冒号。哦,我明白了!”叶小凡恍然大悟,随即又问到,“那么,前辈老爷爷,您方才不是说对象数据类型里面可以放若干个数据吗。现在里面只有一个,怎么加第二个呢?”


“嗯,小娃娃,你这个问题问得很好。你且听好,如果你想要在一个对象里面添加新的数据,就需要加一个逗号,然后写上新的键值对就行了。”


var container = {
  caoyao : "解毒草" ,
  feijian: "乌木剑"
}; 

“小娃娃,我现在给你演示的方式,是在创建对象以后立刻在对象里面设置键值对。其实还有另外的办法,那就是在对象创建之后,再在外面对这个对象的变量进行操作。你看好。我现在用新的办法改写刚才的例子。”

var container = {};
container.caoyao = "解毒草";
container. feijian = "乌木剑";

“虽然我不太明白这里面的玄妙,但是我大概能猜到caoyao是container这个对象的属性,似乎就是把刚才写在{}里面的东西在外面重新写了一次的意思吧。”


“嗯,孺子可教,container.caoyao,这个点就是对象访问属性的意思,正因为caoyao是container的属性,所以container才可以用点。对象包含若干的数据,每一个数据是一个键值对,这些数据也叫作对象的属性。那么键值对的键,就是属性的属性名称。键值对的值,就是属性的属性值。”


“我明白了,但是我还有一个疑问,如果对象用点号去访问一个根本不存在的属性会怎样?”叶小凡问到。


“好问题,就比方说我刚才的例子,如果我直接去访问一个根本不存在的属性-danyao,那么会怎样呢?小娃娃,看好!”

var container = {};
container.caoyao = "解毒草";
container. feijian = "乌木剑";
console.log(container.danyao); //注意:丹药这个属性是不存在的

结果:

90.png

“我明白了,danyao这个属性不存在于container对象中,因此是未定义的,得到的结果就是undefined!” 叶小凡惊呼。

相关文章
|
29天前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
1月前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
20天前
|
JSON 前端开发 JavaScript
JavaScript中对象的数据拷贝
本文介绍了JavaScript中对象数据拷贝的问题及解决方案。作者首先解释了对象赋值时地址共享导致的值同步变化现象,随后提供了五种解决方法:手动复制、`Object.assign`、扩展运算符、`JSON.stringify`与`JSON.parse`组合以及自定义深拷贝函数。每种方法都有其适用场景和局限性,文章最后鼓励读者关注作者以获取更多前端知识分享。
18 1
JavaScript中对象的数据拷贝
|
20天前
|
存储 JavaScript 前端开发
js中的数据类型
JavaScript 中的数据类型包括五种基本类型(String、Number、Undefined、Boolean、Null)和三种引用类型(Object、Array、Function,以及ES6新增的Symbol)。基本类型直接存储值,引用类型存储的是指向实际数据的内存地址。了解它们的区别对于掌握 JavaScript 的变量赋值和函数传参至关重要。
20 1
|
1月前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
2月前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
95 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
2月前
|
存储 JavaScript 前端开发
JavaScript 对象的概念
JavaScript 对象的概念
38 4
|
2月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
43 1
|
2月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
21 2
|
2月前
|
JavaScript 前端开发 Unix
Node.js 全局对象
10月更文挑战第5天
32 2