<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//Object对象
/*
js中表示一个人的共同信息
var name = 'liuyun';
var age = 18;
var gender = 'man';
基本数据类型的数据,所创建的变量是独立的,无法成为一个整体
将三个数据统一放到一起
这样就属于同一个对象,建立起来了联系
对象是一个复合的数据类型,在对象中可以保存多个不同数据类型的属性
对象关系明确,便于操作
对象的分类:
1.内建对象
- 在ES标准中定义的对象,在任何的ES中都可以使用
- 比如Math String Number Boolen Function Object
2.宿主对象
- 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
- 比如BOM(浏览器对象模型) DOM(文档对象模型)
- console,log()
- documnet.write()//console and document 都是宿主对象
3.自定义对象
- 由开发人员自己创建
创建对象:
var obj = new Object();
使用new关键字调用函数,是构造函数(constructor)
构造函数是专门用来创建对象的函数
console.log(obj);//返回一个空对象 object()
console.log(typeof obj)//返回object对象
增 - 向对象添加属性:
对象中保存的值为属性
语法: 对象.属性名 = 属性值;
向obj中添加name属性
obj.name = 'liuyun';
添加gender属性
obj.gender = 'man';
添加age属性
obj.age = 18;
console.log(obj); //{name: "liuyun", age: 18, gender: "man"}
查 - 读取对象中的属性:
语法:对象.属性名
console.log(obj.name);//liuyun
console.log(obj.age);//18
console.log(obj.gender);//man
console.log(obj.adress);//如果读取对象中没有该属性,不会报错会返回undefined
改 - 修改对象中的属性值:
语法:对象.属性名(新值)
obj.name = 'lebulang';
console.log(obj.name)//lebulang
删 - 删除对象的属性
语法:delete 对象.属性名
delete obj.name; //删除了name属性
*/
var obj = new Object();
//添加属性
obj.name = 'liuyun';
obj.var = 'hi';
// obj .123 = 89; //erro
// obj['123'] = 456;
// obj['asdajsldajd2192@(*&^%%'] = 'good';
//读取也是使用[]这种方式
// console.log(obj['asdajsldajd2192@(*&^%%']); //good
// console.log(obj['123']); //456
// 使用[]这种形式操作属性,[]中可以传递一个变量,改变变量的属性名就可以获得相应的属性值,更加灵活
// var n = 'name'; //可以随意修改n变量将在下面获得不同的属性值
// console.log(obj[n]); //liuyun
//如果需要使用特殊的属性名,不能yon.的方式操作
// 应该用 对象["属性名"] = 属性值
// console.log(obj.var); //hi
// - 对象的属性名不强制要求遵守标识符的规范
// 什么名字都可以使用,尽量遵守标识符规范
//属性值
// js对象的属性值可以是任意数据类型 对象也可以
// obj.test = true;
// obj.test = null;
// obj.test = undefined;
//创建一个对象
var obj2 = new Object();
obj2.name = 'liudehua';
//将obj2对象设置成obj属性
obj.test = obj2;
console.log(obj); // {name: "liuyun", var: "hi", test: {…}}
//读取obj2里面的属性
console.log(obj.test.name); //liudehua
//in运算符
// 通过in运算符可检查一个对象中是否含有某个属性名
// 语法:'属性名' in '对象'
//检查obj对象中是否由sex这个属性
console.log('sex' in obj); //没有该属性则返回false
console.log('test' in obj); //有则返回true
</script>
</body>
</html>