博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript对象的理解 及 字面量对象与数组的关系
阅读量:5104 次
发布时间:2019-06-13

本文共 2571 字,大约阅读时间需要 8 分钟。

JavaScript的简单类型包括 数字、字符串、布尔值、null值、undefined值。

其他的值都是对象。对象是可变的键控集合。数组、函数、正则表达式都是对象。

对象是属性的容器,属性都是名字和值对。名字可以是包括空字符串在内的全部字符串。值可以是除了undefined之外的任何值。

JavaScript中的对象是无类别(class-free)的。

JavaScript包括一个原型链特性,允许对象继承另一个对象的属性。正确的使用能减少对象初始化的时间和内存损耗。

对象字面量:

var empty_object = {};var stoog = {	"first-name" : "Jerry",	second_name : "howead"};
注意:
1.如果属性名称合法并且不是保留字,那么名字的 引号 可以不写。也就是说,是“保留字”的时候,“属性名称”一定要打引号,否则IE浏览器下报错;
2.另外,对象的最后一个属性值后面是不要逗号“,”的,不然,IE浏览器又会报错,切记!!!

检索:

1、stoog["first-name"]

2、stoog.second_name

如果尝试返回一个不存在的元素的值,那么将返回一个undefined值。

||可以用来填充默认值

如:var middle = stoog["first-name"]||"(none)";

检索undefined值将会导致TypeError异常,可以使用&&来避免错误

flight.equipment && flight.equipment.model    //undefined.

引用 reference

对象通过引用来传递,他们永远不会被拷贝

原型 Prototype

当用Prototype编写一个类后,当new一个新的object,浏览器会自动把prototype中的内容附加在object上。

反射 Reflection

typeof flight.number //'number' 该方法会检查原型链。

flight.hasOwnProperty('number') //true .该方法不会检查原型链

枚举 Enumeration

for in 可以用来遍历一个对象中所有的属性名。会列出所有的属性,包括函数和可能不关心的原型中的属性。并且不按照顺序取得。

所以可以用 typeof 或者hasOwnProperty来过滤不需要的值。

所以通常使用for而不是for in,可以得到我们想要的属性,而不会得到原型链中的属性,并且可以按顺序取得。

删除 delete

它会删除对象中包含的属性,但是不触及原型链中的任何对象。所以删除对象的属性可能会让原型链中的属性浮现出来。

减少全局变量污染 Global Abatement

最小化使用全部变量的一个方法是在应用中只创建唯一一个全局变量,然后让该变量称为你的应用的容器。

闭包也是一个有效减少全局污染的方法。

 


 

JavaScript 字面量对象 与  数组 混用

1、数组的创建

1.1 采用“数组字面量”

JS的数组是无类型的,里边可以存放任何类型的数据,如:

var aValues=["string", 24, true, null];

这里定义了一个数组字面量,可用如下方式访问:

alert(aValues[0]);     //输出字串”string”alert(aValues[1]);     //输出数字24alert(aValues[2]);     //输出布尔值truealert(aValues[3]);     //输出null。

1.2、 如果不想用字面量表示法定义数组,也可以用Array的构造函数。如:

var aValues = new Array("string", 24, true, null);

2、对象的创建

2.1、用对象字面量,如:

var oCar = {	"color": "red",	"doors": 4,	"paidfor": true}

这里创建了一个对象,内有三个属性,可用如“.”号的方式访问对象的属性:

alert(oCar.color);        //输出”red”alert(oCar.door);         //输出”4”alert(oCar.paidfor);      //输出”true”

也可用“[“属性”]”的方式得到属性值,如下:

alert(oCar["color"]);      //输出字串”red”alert(oCar["door"]);       //输出字串”4”alert(oCar["paidfor"]);    //输出字串”true”

2.2、同样,也可使用JSobject构造函数来创建一个对象。如下:

var oCar = new object();oCar.color = "red";oCar.doors = 4;oCar.paidfor = true;

2、数组和对象的混合

这里只能使用混合字面量,来创建“对象数组”或“包含数组的对象”。如下

var oCars = [	{		"color": "red",		"doors": 2,		"paidfor": true	},	{		"color": "blue",		"doors": 4,		"paidfor": true	},	{		"color": "white",		"doors": 2,		"paidfor": false	}];

这就是一个对象数组,里面包含了三个对象,访问时形如这样:

alert(oCars[1].color);       //输出“blue”

如下是一个包含数组的对象:

oCarInfo = {	"availableColors": ["red", "blue", "white"],	"availableDoors": [2, 4]};

访问时形如:

alert(oCarsInfo.availableColor[1]); // 输出“blue”

 

延伸阅读:

转载于:https://www.cnblogs.com/52php/p/5660038.html

你可能感兴趣的文章
DO 如何开启IPV6
查看>>
windows 非窗口定时器
查看>>
lisp单个文件的编译
查看>>
swfupload 上传报 security error # 2049 (security) 安全错误问题
查看>>
noip模拟赛 czy的后宫
查看>>
常州模拟赛d3t2 灰狼呼唤着同胞
查看>>
bzoj3932 [CQOI2015]任务查询系统
查看>>
Control Flow ->> Containers
查看>>
ECNU1012
查看>>
使用SqlBulkCopy 批量操作大量数据
查看>>
Orchard详解--第八篇 拓展模块及引用的预处理
查看>>
python装饰器系列(一)
查看>>
《你必须掌握的Entity Framework 6.x与Core 2.0》书籍出版
查看>>
从C#中传递object到lua的一个问题
查看>>
python项目---数据可视化(02)
查看>>
meteor 检测运行环境,手机或者桌面
查看>>
34-Digit factorials
查看>>
evaluateScript--evaluatePopoverScript--区别
查看>>
Android MediaPlayer SeekTo 在 8.0 版本上优化说明
查看>>
map.entry<k,v>小用法(转)
查看>>