JavaScript-高级篇-理解Object

74 阅读2分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。

第1章 理解Object

1.1 创建Object对象的两种方式

实例化Object对象的方式有两种:使用Object构造器和使用对象的字面量。例如:

var person1 = {
    name: '张美丽'
};
var person2 = new Object();
person2.name = '李美丽';

1.2 给Object对象添加属性

我们可以随时随地为对象添加属性,也可以随时修改属性的值。

var person1 = {
    name: '王美丽'
};

var person2 = new Object();
person2.name = '孙美丽';

//给对象添加属性
person1.age = 23;
person2.age = 25;
//修改属性的值
person1.name = '张美丽';
console.log(person1.name);     
person2.name = '李美丽';
console.log(person2.name);  

1.3 Object属性的遍历方式

1.3.1 for...in

默认情况下,我们添加到对象上的属性都是可枚举的,这样的话我们就可以使用for-in循环遍历它们。

1.3.2 Object.keys(obj)

参数:要返回其枚举自身属性的对象

返回值:一个表示给定对象的所有可枚举属性的字符串数组

Object.keys(person) // ["name", "age", "address","getName"]

1.3.3 Object.getOwnPropertyNames()方法

该方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。

Object.getOwnPropertyNames(obj)
  • 参数:一个对象,其自身的可枚举和不可枚举属性的名称被返回。

  • 返回值:在给定对象上找到的自身属性对应的字符串数组。

1.4 检查属性是否存在

由于对象的属性可以被随时随地被修改或删除,因此有时候我们需要检查对象的某个属性是否存在。使用下面的方式检查是不可靠的,那么通过in可以判断对象是否有这个属性。

1.5 删除属性

我们可以随时给对象添加属性,也可以随时地删除属性。有的人可能会使用null值赋值给属性,这样并不能删除属性,仅仅是改变了属性的值。我们需要使用delete操作符将属性从对象中完全删除。

//删除属性

obj.name = undefined;

其name、say属性仍存在obj对象中,怎样才能在obj中移除name属性呢?

delete obj.name;