对象的概述:
概述: 对象属于一种引用数据类型,在对象中可以保存多个不同数据类型的属性,用来保存自己的属性值,属性值可以是任意数据类型。
对象的分类:
- 内建对象
- 由ES标准中定义的对象,在任何的ES的实现中都可以使用
- 比如:Math对象、String对象、Number对象、Boolean对象、Function对象、Object对象…
- 宿主对象
- 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
- 比如:BOM对象、DOM对象
- 自定义对象
- 由开发人员自己创建的对象
创建一个对象:
- 使用new关键字调用的函数,是构造函数constructor,构造函数是专门用来创建对象的函数,使用typeof检查一个对象时,会返回object;也可以使用对象字面量的形式创建一个函数。
//创建一个普通对象
var obj = new Object();
var obj = {};
//创建一个函数对象
var fun = new Function();
function fn(){};
//创建一个数组对象
var arr = new Array();
var arr = [];
//创建一个正则对象
var reg = new RegExp(pattern, attributes);
var reg = //;
//创建一个字符串对象
var str = new String(s);
var str = "s";
//创建一个布尔对象
var bool = new Boolean(value);
var bool = true;
//创建一个数值对象
var myNum = new Number(value);
var num = 1;
//创建一个日期对象
var myDate = new Date();
向对象添加属性或修改属性值
语法:对象.属性名 = 属性值;
//创建一个obj对象
var obj = new Object();
//向obj中添加一个name属性,其属性值为“孙悟空”
obj.name = "孙悟空";
//向obj中添加一个gender属性,其属性值为“男”
obj.gender = "男";
//向obj中添加一个age属性,其属性值为18
obj.age = 18;
//修改name属性的属性值为“猪八戒”
obj.name = "猪八戒";
读取对象中的属性
语法:
第一种方式:对象.属性名
第二种方式:对象[“属性名”] = 属性值
**注:**如果要使用特殊的属性名,不能采用第一种方式的方式来操作,类如属性名是一个变量,则应该使用第二种方式。如果读取对象中没有的属性,不会报错而是会返回undefined。
var obj = new Object();
//向obj中添加一个name属性,其属性值为“孙悟空”
obj.name = "孙悟空";
//向obj中添加一个gender属性,其属性值为“男”
obj.gender = "男";
//向obj中添加一个age属性,其属性值为18
obj.age = 18;
//读取obj对象中的gender属性值
console.log(obj.gender); // 输出“男”
console.log(obj.hello); //因为obj对象不存在hello属性,因此输出undefined
删除对象的属性
语法:delete 对象.属性名
var obj = new Object();
//向obj中添加一个name属性,其属性值为“孙悟空”
obj.name = "孙悟空";
//向obj中添加一个gender属性,其属性值为“男”
obj.gender = "男";
//向obj中添加一个age属性,其属性值为18
obj.age = 18;
//删除obj对象中的name属性
delete obj.name;
判断一个对象是否拥有一个属性
语法:“属性名” in 对象
该语句会有一个返回值,如果有则返回true,没有则返回false
var obj = new Object();
//向obj中添加一个name属性,其属性值为“孙悟空”
obj.name = "孙悟空";
//向obj中添加一个gender属性,其属性值为“男”
obj.gender = "男";
//向obj中添加一个age属性,其属性值为18
obj.age = 18;
//判断obj对象中是否含有“name”属性
console.log("name" in obj); // 输出“true”
//判断obj对象中是否含有“hello”属性
console.log("hello" in obj); //输出“false”