对象 (Obiect):
对象是一个 无序的 数据集合
对象中是可以存储任意类型得数据
对象中得数据是以 key(键、属性)和 value(值,属性值)得形式存在
书写格式:{key:value,key:vlue}
//创建对象
//1.构造函数方式:
var nobj1 = new Object();
console.log(nobj1);//{}
var nobj2 = new Object({ a: 111, b: 222, c: 333 });
console.log(nobj2);//{a: 111, b: 222, c: 333}
//2.字面量得方式:
var obj1 = {};
console.log(obj1);//{}
var obj2 = {
name: '张乐乐',
sex: '男',
age: 22,
hooby: ['丽丽', '亚亚', '杰杰'],
sayhi: function () {
console.log('乐乐是一个185大帅哥');
}
};
console.log(obj2);
//对象得数据类型:
console.log(typeof nobj2);// 'ojbect'
console.log(typeof obj2);// 'ojbect'
// 引用数据类型(对象数据类型、复杂数据类型)
// Function
// Array
// Object
//操作对象得成员,通过 key
//语法:对象.key
//可以实现对 对象的 查 改 增 删
//查-- 查看访问
console.log(obj2.name);//乐乐
console.log(obj2.age);//22
console.log(obj2.hooby);//['丽丽', '亚亚', '杰杰']
console.log(obj2.sayhi);//ƒ () {console.log('乐乐是一个185大帅哥');}
obj2.sayhi();//乐乐是一个185大帅哥
//如果访问对象没有的key,得到的结果就是undefined
console.log(obj2.abc);//undefined
//改 --改变--对已有的key赋值就是改变
obj2.name = '乐乐'
obj2.age = '外星人'
console.log(obj2);//{name: '乐乐', sex: '男', age: '外星人', hooby: Array(3), sayhi: ƒ}
// 增--增加 --- 对没有的key赋值就是增加
obj2.x = 'lalala';
console.log(obj2);
// 删--删除
delete obj2.age;
console.log(obj2);
//对象的变量----for...in循环
//for..in循环 是js专门定义用来 遍历 数组/对象 的一种循环体
for (var item in obj2) {
//console.log(item);//遍历对象是(变量对象的) key
console.log(obj2[item]);//遍历对象是(变量对象的key的)value
}
//注意:
//如果对象的key存在了变量,操作对象是使用的是变量
//则不能使用 点 的语法,而需要使用中括号语法
var ooo = {
abc: 111,
nnn: 345,
xyz: 987
}
console.log(ooo);
console.log(ooo.abc);//111
var u = 'abc';
console.log(ooo.u);//undefined
console.log(ooo[u]);//111 为啥等于111??? u和abc换了 所以abc=u=111
var y = 'hello';
ooo[y] = y;
console.log(ooo);//{abc: 111, nnn: 345, xyz: 987, hello: 'hello'}