对象简介
/*
对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性
对象的分类:
1、内建对象
-由ES标准中定义的对象,在任何的ES中都可以使用
-比如:Math String Object……
2、宿主对象
-由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
-比如:BOM(浏览器对象模型) DOM(文档对象模型)
在console.log()中,console就是一个对象
3、自定义对象
-由开发人员自己创建的对象
*/
//创建对象
/*
使用new关键字调用的函数,是构造函数constructor
构造函数是专门用来创建对象的函数
使用typeof检查一个对象时,会返回一个Object
*/
var obj = new Object();
// console.log( typeof obj);
/*
在对象中保存的值称为属性
向对象添加属性
语法:
对象.属性名 = 属性值;
*/
//向obj中添加一个name属性
obj.name = "Anna";
//向obj中添加一个age属性
obj.age = 15;
console.log(obj);//返回{name: "Anna", age: 15}
/*
读取对象中的属性
语法:
对象.属性名
如果读取对象中没有的属性,不会报错,而是会返回一个undefined
*/
console.log(obj.name);//返回Anna
console.log(obj.sex);//返回undefined
/*
修改对象的属性值
语法:
对象.属性值 = 新值;
*/
obj.name = "Tom";
console.log(obj.name);//返回Tom
/*
删除对象的属性
语法:
delete 对象.属性名
*/
delete obj.name;
console.log(obj.name)//Undefined
console.log(obj);//返回{age:15}
属性值和属性名
/*
属性名:
对象的属性名不强制要求遵守标识符规范,取什么名都行
如果要使用特殊的属性名,不能采用.的方式,使用下列语法:
对象["属性名"] = 属性值
*/
var obj = new Object();
obj["123"] = 456;
console.log(obj);
console.log(obj['123']);
/*
使用[]这种形式去操作属性,更加的灵活
在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性
*/
obj['hello'] = '你好';
var n = 'hello';
console.log(obj[n]);//效果同obj['123'],若将n的值改为'hello',则输出“你好”。
/*
属性值
JS对象的属性值,可以是任意的数据类型
甚至也可以是一个对象
*/
obj.test = 0;
var obj2 = new Object();
obj2.name = "sun";
obj.test = obj2;
console.log(obj);
console.log(obj.test);
/*
in运算符
-通过该运算符可以检查一个对象中是否含有指定的属性
有则返回true,没有则返回false
-语法:
"属性名" in 对象
*/
//检查obj中是否含有test2这个属性
console.log("test2" in obj);//返回false
console.log("test" in obj);//返回true
对象字面量
//创建一个对象
//var obj = new Object();
//使用字面量来创建一个对象
var obj = {};//形同 var obj = new Object();
obj.name = "tom";
console.log(obj);
/*
使用对象字面量,可以在创建对象时,直接指定对象中的属性
语法:
{属性值:属性名,属性值:属性名,属性值:属性名...}
对象字面量的属性名可以加引号,也可以不加(一般不加)
如果要使用一些特殊的名字,必须加引号
属性名和属性值是名值对结构,之间用:连接,多个名值对用,分隔
*/
var obj2 = {
name:"nana",
age:16,
test:{name:"tutu"}
};
console.log(obj2);