Object 属于引用数据类型,对象属于一种复合的数据类型,在对象中可以保存多个不同的数据类型的属性。
基本数据类型的不足
- 基本数据类型都是单一的值
- 值和值之间没有任何的联系
对象的分类
1. 内建对象
由 ES 标准中定义的对象,在任何ES的实现中都可以使用。比如:Math String Number Function…
2. 宿主对象
由 JavaScript 运行环境(浏览器)提供的对象。比如:BOM DOM
3. 自定义对象
由来发人员自己创建的对象
自定义对象
创建一个对象
在 JS 中,创建一个对象有以下几种方式
1 . 使用 new
关键字来创建
2. 使用对象的字面量来创建一个对象
方式1
使用 new
关键字调用的函数叫做 构造函数
,构造函数就是专门用来创建对象的函数。
使用 typeof
来检查一个对象的时候,返回的是 object
var obj = new Object(); // 创建一个对象
在对象
中保存的值称为 属性
,我们可以向对象中 添加、删除、和修改属性。
向对象中添加一个属性
语法:对象.属性名 = 属性值
var obj = new Object(); // 创建一个对象
obj.name = "张三"; // 添加一个 name 属性,值为 ”张三“
console.log(obj); //控制台输出这个对象
运行结果
读取对象中的属性
语法:对象.属性名
如果读取对象中没有的属性时,不会报错而是会返回 undefined
var obj = new Object(); // 创建一个对象
obj.name = "张三"; // 添加一个 name 属性,值为 ”张三“
console.log("对象中的属性值为:" + obj.name); //读取对象的属性
console.log("对象中没有这个属性:" + obj.age); //读取对象中没有的属性
运行结果
修改对象中的属性
语法:对象.属性名 = 新的属性值
修改对象中的属性和添加属性其实是一个方法,当对象中没有这个属性的时候会添加这个属性,有这个属性的时候,会修改这个属性的值。
var obj = new Object(); // 创建一个对象
obj.name = "张三"; // 添加一个 name 属性,值为 ”张三“
console.log("原值为:" + obj.name); //输出原值
obj.name = "李四"; //修改对象中的name属性值
console.log("新值为:" + obj.name); // 输出新值
控制台输出结果
删除对象中的属性
语法: delete 对象.属性名
var obj = new Object(); // 创建一个对象
obj.name = "张三"; // 添加属性 name
obj.age = 18; // 添加属性 age
obj.gender = "男"; // 添加属性 gender
obj.address = "我是张三哥哥的地址..."; //添加属性 address
console.log(obj); // 删除前输出
// 删除属性
delete obj.address; // 删除属性 address
console.log(obj); // 删除后输出
控制台的运行结果
方式 2
使用对象字面量来创建一个对象
优点: 使用对象字面量在创建对象时可以直接指定对象中的属性。
语法:{属性名:属性值,属性名:属性值...}
//使用对象字面量来创建一个对象,并直接指定一些属性
var obj = {name:"张三",age:18,gender:"男",address:"北京市朝阳区XXX小区."};
console.log(obj); // 输出对象
控制台的输出,展开状态
注意:
-
对象字面量的属性名可以加引号也可以不加。如果要使用一些特殊的名字则必须加引号。
例如"!#!@#ASD"
-
属性名和属性值是一组一组的名值对结构,名和值之间使用
:
隔开,多个明值对之间使用;
分隔。
对象的属性名
- 对象的属性名不强制要求遵守标识符的规范,什么乱七八糟的名字都可以,但是使用时尽量按照标识符的规范来起名字。
- 如果要使用特殊的属性名不能采用
.
的方式来操作,需要使用另一种方式来操作。
语法: 对象["属性名"] = 属性值
- 读取的时候也需要采用这种方式.
- 使用
[]
这种形式来操作属性更加灵活,在[]
中可以直接传递一个变量,这样变量值是多少就会读取哪个属性。
var obj = {name:"张三",age:18,"hello":"你好"}; // 创建一个 对象
// 读取对象的 hello 属性
console.log("hello 的属性值为:" + obj["hello"]); // 输出对象的属性值
// 修改对象的 hello 属性值
obj["hello"] = "你好,我正在使用中文和你打招呼呢~~~";
console.log("hello 的属性值为:" + obj["hello"]); // 输出对象的属性值
控制台的输出结果
对象的属性值
JS 对象的属性值,可以使任意的数据类型。甚至也可以是一个对象.
// 创建一个对象
var obj = {name:"孙悟空",age:18,gender:"男",marital_status:true,wife:{name:"观音菩萨",age:28,gender:"女",marital_status:true}};
console.log("姓名为:"+obj.name+",今年 "+obj.age+" 岁啦,婚姻状态:"+obj.marital_status+" ,老婆是:"+obj.wife.name+",她今年 "+obj.wife.age+" 岁了.." ); //控制台打印结果
/*
设置一些属性
name: 姓名
age : 年龄
gender:性别
marital_status:婚姻状态
wife:妻子(一个对象)
*/
控制台的运行结果
in 关键字
通过该运算符可以检查一个对象中是否包含指定的属性,如果有则返回 true,否则返回 false.
语法:"属性名" in 对象
var obj = {name:"孙悟空",age:18,gender:"男",address:"花果山"}; // 创建一个对象
// 检查对象中是否含有 gender 属性
console.log("gender" in obj);
控制台运行结果