添加新属性到对象中
const obj={};
//方法一:点符号添加属性
obj.newPropKey='新属性的值'
//方法二:方括号添加属性
obj['newPropKey2']='新属性的值'
删除对象的属性
const obj={
needDeleteProp:'value'
}
delete obj.needDeleteProp; //使用delete关键字,需要删除的对象的属性
修改对象属性的值
const obj={
target:'want to change'
}
//方法一:点符号赋值
obj.target='change new word';
//方法二:方括号赋值
obj['target']='change new word';
查找对象是否存在该属性
方法一:in
const obj={
a:1,
b:2,
c:3,
d:4,
}
console.log('a' in obj)//true
console.log('e' in obj)//false
- 无论该属性是在实例上还是在原型上
- true:存在该对象的原型或实例上
- false:该对象原型或实例都不存在该属性
方法二:hasOwnProperty()
function Person(){}
Person.prototype.name = "Lao";
Person.prototype.age = 22;
Person.prototype.job = "Software Engineer";
let person1 = new Person();
let person2 = new Person();
console.log(person1.hasOwnProperty("name")); // false
person1.name = "Jia";
console.log(person1.name); // "Jia",来自实例
console.log(person1.hasOwnProperty("name")); // true
- 用来确认某个属性是在实例上还是原型对象上。
- true:属性在实例上。
- false:属性不在实例上。
方法三:列出该对象的所有属性,看是否包含
const obj={
a:1,
b:2,
c:3,
d:4,
}
let keys = Object.getOwnPropertyNames(obj.prototype); //列出所有【实例】属性 [a,b,c,d]
keys.includes('a')//true;
keys.includes('e')//false;
拷贝对象
浅拷贝
- 创建一个新对象,仅复制原对象的一层属性,新对象和原对象共享同一个引用(即原对象属性值发生改变,新拷贝的对象属性值也会发生改变);
Object对象
方法一:扩展运算符
const originalObject={name:'Lao',age:22,job:'FrontEnd Engineer'};
const shallowCopy={...originalObject}; //浅拷贝
方法二:Object.assgin()方法
const originalObject={name:'Lao',age:22,job:'FrontEnd Engineer'};
const shallowCopy=Objec.assign({},originalObject);//浅拷贝
方法三:循环遍历和赋值
const originalObject={name:'Lao',age:22,job:'FrontEnd Engineer'};
const shallowCopy = {};
for (let key in originalObject) {
if (Object.prototype.hasOwnProperty.call(originalObject, key)) {
shallowCopy[key] = originalObject[key];
}
}
Array对象
方法一:Array.prototype.slice() 方法
const originalArray=[1,2,3,4];
const shallowCopy = originalArray.slice();
方法二:扩展运算符
const originalArray=[1,2,3,4];
const shallowCopy = [...originalArray];
方法三:Array.from() 方法:
const originalArray=[1,2,3,4];
const shallowCopy = Array.from(originalArray);
深拷贝
- 创建一个新对象,对象的属性是原始对象属性值的副本,深拷贝会递归复制对象及其所有嵌套对象,确保新对象与原对象完全独立,(即:修改新对象不会影响原对象。)
Object对象
方法一:JSON.parse() 和 JSON.stringify()配合使用
const originalObject={name:'Lao',age:22,job:'FrontEnd Engineer'};
const deepCopy = JSON.parse(JSON.stringify(originalObject));
- 通过先将对象转换为 JSON 字符串
- 然后再将 JSON 字符串转换为新的对象,实现深拷贝。