自学的教程
阮一峰老师的JavaScript标准参考教程:https://wangdoc.com/javascript/
1. 概述
对我来说,目前应用JavaScript是很浅显的一层,几乎不用对象,导致开发效率很低。而对象是JavaScript最重要的一种数据类型,所以拿出来单独好好的学习一下。
基本概念需要了解:
- 对象其实就是键值对的组合,键名都是字符串(不是的也会转为字符串),而键值则任意;
- 如果键值是一个函数,则叫做方法;
其实面向对象的思维方式与C++,Java等语言都一样,我们需要渐渐尝试去用对象,用方法,规范逻辑。
2. 属性的操作
1)可以用点运算符,[]运算符读取对象的属性,或者给属性赋值;
2)JavaScript 允许属性的“后绑定”,也就是说,你可以在任意时刻新增属性,没必要在定义对象的时候,就定义好属性;
3)属性的查看:查看一个对象本身的所有属性,可以使用Object.keys方法
var obj = {
key1: 1,
key2: 2
};
Object.keys(obj);
// ['key1', 'key2']
4)属性的删除:delete即可,删除成功后返回true
var obj = { p: 1 };
Object.keys(obj) // ["p"]
delete obj.p // true
obj.p // undefined
Object.keys(obj) // []
注意:删除一个不存在的属性,delete不报错,而且返回true,因此不能通过delete返回值来判断某个属性是否存在。可以用下面讲解的in运算符。
5)属性是否存在:in 运算符
var obj = { p: 1 };
'p' in obj // true
'toString' in obj // true
in运算符的一个问题是,它不能识别哪些属性是对象自身的,哪些属性是继承的。就像上面代码中,对象obj本身并没有toString属性,但是in运算符会返回true,因为这个属性是继承的。
这时,可以使用对象的hasOwnProperty方法判断一下,是否为对象自身的属性:
var obj = {};
if ('toString' in obj) {
console.log(obj.hasOwnProperty('toString')) // false
}