【JavaScript 漫游】【004】数据类型 object

【JavaScript 漫游】【004】数据类型 object_第1张图片
文章简介

本文为【JavaScript 漫游】专栏的第 004 篇文章,记录 JS 数据类型 object 的重要知识点。

  1. . 运算符和 [] 运算符
  2. Object.keys 方法
  3. delete 命令
  4. in 运算符
  5. for ... in ...

对象概述

JS 的对象是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

var obj = {
  foo: 'hello',
  bar: 'world',
};

: 前的字符串称为键名,: 后的字符串称为键值。如果键名符合标识符的条件,就可以不加引号,否则必须加上引号。

每一个键名,又可以称为属性。属性可以动态创建,不必在对象声明时就指定。

var obj = {};
obj.foo = 123;
obj.foo; // 123

. 运算符和[] 运算符

两种符号都可以用于属性的读取和赋值操作,要注意的是,当属性不符合标识符规范时,必须使用[] 运算符。

var obj = {};
obj.foo = 'hello';
obj['bar'] = 'world';
obj['foo'];  // 'hello'
obj.bar;  // 'world'

Object.keys 方法

用于查看对象本身的所有属性。

var obj = {
  foo: 'hello',
  bar: 'world',
};
Object.keys(obj); // ['foo', 'bar']

delete 命令

用于删除对象本身的某个属性,删除成功返回 true,失败返回 false。

var obj = {
  foo: 'hello',
  bar: 'world',
};
delete obj.foo;
obj.foo;  // undefined

删除一个不存在的属性,delete 命令也不会报错,而且返回 true。只有一种情况会返回 false,那就是该属性存在且不得被删除。

一个属性不得被删除是通过属性描述对象设置的,下文的不可遍历同样如此,专栏中后面的文章会进行描述记载。

in 运算符

用于检查对象是否包含某个属性,如果包含返回 true,否则返回 flase。

var obj = {
  foo: 'hello',
  bar: 'world',
};
'foo' in obj;  // true

in 运算符不能识别哪些属性是对象自身的,哪些是继承的。弥补的方法是使用对象的 hasOwnProperty 方法判断属性是否为对象自身的属性。

var obj = {};
if ('toString' in obj) {
  console.log(obj.hasOwnProperty('toString')) // false
}

for ... in ...

用于遍历对象的所有属性,不论属性是否是对象自身的,还是对象继承的,都会被遍历,只有被设置了不可遍历的属性才不会被遍历到。

var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
  console.log('键名:', i);
  console.log('键值:', obj[i]);
}
// 键名: a
// 键值: 1
// 键名: b
// 键值: 2
// 键名: c
// 键值: 3

你可能感兴趣的:(JavaScript,漫游,javascript,前端)