JavaScript对象
对象这个概念很抽象,在JavaScript中,一切都可以看作是对象,对象可以拥有属性,也可以拥有方法,就像是一台多功能的冰箱,它可以有重量,高度以及功耗这些属性(属性),做很多事情,可以用它冰冻东西,可以用来存储东西(方法)。
我们可以用,以下两种方式来创建一个空的对象
let user = new Object();//“构造函数”的语法 Object首字母要大写
let user = {}; //字面量的语法
文本和属性
在创建对象的时候,以键值对的形式存放
let user = { //创建了一个对象
name:"姓名", //这里用逗号来进行分割
age:"18",
"hallo yoyo":true //多词属性必须要加上引号
}
左边的成为键(“标识符”),在冒号 " : " 的前边,值则在右边。
我们可以通过点的形式来进行访问,打开控制台
console.log(user.name); //此时会输出“姓名”
但是在输入"hallo yoyo"的时候,语法会报错:
user.hallo yoyo = true; //这里会出错误
这里是因为,key不是有效的变量标识符(不包含空格,不能以数字开头,不能包含特殊的字符),我们可以通过方括号的形式,来进行读取
console.log(user['hallo yoyo']);
如果我们不需要某个属性,则可以通过delete的方式来删除该属性:
delete user.name; //此时删除了user中的name属性
计算属性
当我们在创建一个对象的时候,如果在对象字面量中使用方括号的话,这叫做计算属性:
let a = prompt("请输入你要够买的东西","phone");
let b = {
[a]:2999 //属性从变量a中获取到
}
alert(b.phone); //这里的phone是上边输入的phone
console.log(b[a]); //这里输出2999
检测属性是否存在,用in
由于JavaScript的特性,属性即使不存在,也不会报错,但是能得到一个undefined,我们可以通过判断它是否等于undefined来判断一个属性是否存在:
let a = {};
console.log(a.b===undefined);//得到结果为true,则证明在a中,并没有一个叫b的属性
这里除了上述的方法,还可以通过一个叫 "in" 的检查属性来判断是否存在该属性
let a = {
b:2
}
console.log("b" in a); //这里b需要用引号引上 返回的结果为true
console.log("c" in a); //返回的结果为false
通过 "in" 的方式,我们可以看出,若对象中有该属性,则返回的结果为true,否则为false。
这里我们需要注意的是,b和c需要加上引号,因为这是一个字符串,而省略引号的话,则表示 "in" 之前的是一个变量:
let a = {
b : 2
}
let c = "b";
console.log(c in a) // true
for...in 循环
"for in" 循环并不是for循环,两者不是一个东西:
for(key in obj){
// 执行的代码
}
例如:
let user = {
name:"张三",
age:18
};
for(let key in user){
console.log(key); // 输入name age
console.log(user[key]) //输入张三 18
}
我们在遍历对象的时候,整数属性会被排序:
let user = {
"1":"张三",
"41": 18,
"32": 3,
"2": 182
};
for (let key in user) {
console.log(key); //这里会输出1 2 32 41
}