JavaScript——对象-自定义对象

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/actionActivity/article/details/89791345

Object 属于引用数据类型,对象属于一种复合的数据类型,在对象中可以保存多个不同的数据类型的属性。

基本数据类型的不足

  1. 基本数据类型都是单一的值
  2. 值和值之间没有任何的联系

对象的分类

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);

控制台运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/actionActivity/article/details/89791345