js对象操作方法大全!!对象遍历,创建对象,对象拷贝

1、创建对象
对象创建有两种方式,一是直接将一个对象值赋值给目标变量,二是使用声明
(1)var obj = {} 
(2)var obj = new Object()
(3)Object.create()使用现有的对象来提供新创建的对象的__proto__。 
    //前面省略person对象
const me = Object.create(person);
me.name = "Matthew"; // "name" is a property set on "me", but not on "person"
me.isHuman = true; // inherited properties can be overwritten
me.printIntroduction();
// expected output: "My name is Matthew. Am I human? true"
 
2、添加属性:
(1)Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。
(2)Object.defineProperties() 方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象。
 (3)直接添加。
3、对象属性删除delete;
var obj = {  a: 1,  b: 2}delete obj.a
如果属性值清空,则直接赋值为空就好了obj.a = ''
 
4、复制:
1、直接赋值 var a=b
2、Object.assign() 实现对象的浅拷贝【若对象里的属性值为引用类型,则拷贝的是地址】
3、JSON.parse(JSON.stringify(obj))深拷贝。
会主动丢弃(1)值为undefined的属性。
    (2)值为Function类型的属性。
    (3)值为Symbol类型。
    (4)原型属性。
4、扩展运算符...
 
5、对象的遍历
(1)for......in,for (let x of obj)
  (2)Object.key(obj)返回一个属性数组
(3)Object.values(obj)返回一个值数组
(4)Object.getOwnPropertyNames(obj) 返回一个数组,它包括自身所有属性
// 使用Array.forEach输出属性名和属性值
Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
  console.log(val + " -> " + obj[val]);
});
// 输出
// 0 -> a
// 1 -> b
// 2 -> c
(5)Object.getOwnPropertySymbols(obj) 返回数组,包含对象自身所有属性,包括Symbol
 
6、冻结
Object.freeze() 方法可以冻结一个对象。冻结后不能做任何操作。

原文地址:https://www.cnblogs.com/jundongsheng/p/13617863.html