前言
对象和作为JavaScript里基础的用法,我们必须牢牢掌握它们的用法,本文将向你展示一种高效的学方法。
对象
在JavaScript中,对象是一种无序的集合数据类型,它由若干个键值对组成。
JavaScript中的对象用于描述现实世界中某个对象。下面我们用小明举例
let xiaoming{
name:'小明',
age:18,
height:1.80,
weight:70,
school:ecut,
score:A
}
在JavaScript中,我们用{。。。}表示一个对象,键值对用xxx: xx申明,用,隔开。注意,最后一个键值对不需要在末尾加,,如果加了,一些浏览器会报错。
上面我们往小明的这个对象中添加了许多属性,age,name,school等。那我们如何访问属性呢?
访问属性是通过.操作符完成的。
xiaoming.name; // '小明'
xiaoming.birth; // 1990
但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用''括起来。就像
let xiaomei{
name:'小美',
'high-school':'NO1.High-school'
}
此时我们用.访问不了小美的highschool属性。是因为小美的high-school不是一个有效的变量,所以我们要用''括起来,无法用.访问属性,必须要用['xxx']来访问。
xiaomei['high-school'] // 'NO1.High-school'
xiaomei['name'] // '小美'
xiaomei.name //'小美'
也可以用xiaomei['name']来访问xiaomei的name属性,不过xiaomei.name的写法更简洁。我们在编写JavaScript代码的时候,属性名尽量使用标准的变量名,这样就可以直接通过object.prop的形式访问一个属性了。
如果访问一个不存在的属性会返回什么呢?JavaScript规定,访问不存在的属性不报错,而是返回undefined:
'use strict';
let xiaoming = {
name: '小明'
};
console.log(xiaoming.name);
console.log(xiaoming.age); // undefined
由于JavaScript的对象是动态类型,你可以自由的添加与删除信息。
let xiaoming = {
name: '小明'
};
xiaoming.age; // undefined
xiaoming.age = 18; // 新增一个age属性
xiaoming.age; // 18
delete xiaoming.age; // 删除age属性
xiaoming.age; // undefined
delete xiaoming['name']; // 删除name属性
xiaoming.name; // undefined
delete xiaoming.school; // 删除一个不存在的school属性也不会报错
如果我们想检测xiaoming 是否拥有某属性,我们可以用in操作符
let xiaoming{
name:'小明',
age:18,
height:1.80,
weight:70,
school:ecut,
score:A
}
'name' in xiaoming; //ture
'grade' in xiaoming; // false
不过要小心,如果in判断一个属性存在,这个属性不一定是xiaoming的,它可能是xiaoming继承得到的:
'toString' in xiaoming; // true
因为toString定义在object对象中,而所有对象最终都会在原型链上指向object,所以xiaoming也拥有toString属性。
要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法:
let xiaoming = {
name: '小明'
};
xiaoming.hasOwnProperty('name'); // true
xiaoming.hasOwnProperty('toString'); // false
这就是数组的一些基本用法