三分钟学会JavaScript基础之"对象"

135 阅读2分钟

前言

对象和作为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']来访问xiaomeiname属性,不过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

这就是数组的一些基本用法