你应该知道的JavaScript操作对象方法总结
JavaScript的所有数据都可以被视为对象,对象其实是一种无序的数据集合,由很多个“键值对”(key-value)构成, 生成对象的方法有下面三种方式。
<script>
var obj1 = {};
var obj2 = new Object();
var obj3 = Object.create(proto, propertyObject);
//proto 第一个参数是这个新创建的对象的原型(指定一个对象作为新创建对象的__proto__)。
//propertyObject 可选参数,是一个对象,用于对新创建的对象进行初始化。
var obj4 = Object.create(obj1, {
name: {
value: "sunflowersoft",
// 初始化赋值
writable: true,
// 设置属性是否可以被重写,默认属性值为false不能重写。
configurable: true,
// 是否能够删除,默认属性值为false
enumerable: true,
// 是否可以用for in 进行枚举,默认属性值为false不能被枚举。
get() {},
// get函数获取属性返回结果
set(value) {} //set函数设置属性的值,参数value
}
});
</script>
操作对象的方法
扩展运算符: 扩展运算符(…)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。
枚举属性for in: 循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性),自身属性或者来自原型对象上的继承属性都可以被枚举出来。
Object.assign(): 将所有可枚举属性的值从一个或多个源对象分配到目标对象并返回目标对象,常用来合并对象。 Object.assign(target, …sources)。 参数解析: target—>目标对象,source—>源对象,返回值是target,即目标对象。
Object.keys(obj): 返回obj对象所有的可枚举的自有属性的名称组成的数组,不包含继承属性。
Object.values(): 返回一个给定对象自身的所有可枚举属性值的数组
Object.entries(): 返回一个给定对象自身可枚举属性的键值对组成的数组
Object.freeze(): 可以冻结一个对象,冻结后不能做任何操作。
hasOwnProperty(): 返回一个布尔值,用于检测这个属性是否是对象本身属性,而不是原型对象上的属性。obj.hasOwnProperty(‘name’))
Object.getOwnPropertyNames(obj): 返回一个自身所有属性(可枚举和不可枚举属性)名称组成的字符串数组,但是不含 Symbol 属性。
Object.getOwnPropertySymbols(obj): 返回一个数组,包含对象自身的所有 Symbol 属性的键名。
<script>
let obj = {
name: 'may',
age: 20
};
let objA = {
school: '复旦大学',
score: 89
}
let newObj = {...obj
};
newObj // { name:'may', age:20 }
for (let x in obj) {
console.log(obj[x]); //may,20
}
Object.assign({},
obj, objA); // {name:'may', age:20,school:'复旦大学', score: 89}
Object.keys(obj); // ['name', 'age']
Object.values(obj); // ['may', 20]
Object.entries(obj); // [['name', 'may'],['age', 20]]
Object.getOwnPropertyNames(obj); // ['name', 'age']
</script>