JavaScript-对象
对象
创建对象
-
使用
new
关键字let obj = new Object();
-
使用字面量创建
let obj = {};
对象常用方法
-
属性遍历
for (let key in obj){ // ... }
-
属性删除
delete obj.name; delete obj.say;
-
判断属性有无
// in 会在原型链上查找 console.log(attrName in obj); // hasOwnPrototype 只会在构造函数中寻找 console.log(obj.hasOwnPrototype(attrName));
-
解构赋值
// 解构赋值定义的变量名必须与对象内部属性名相同,否则无法赋值成功 // 解构赋值可以为变量赋默认值 let obj = {name: 'zs', age: 18}; let {name, age = 20, gender = 'man'} = obj; console.log(name, age, gender); // 'zs' 18 man
对象深拷贝
-
深拷贝:通过一个参数给另一个参数赋值后,改变新的参数,不会修改原有参数。基本数据类型都是深拷贝。
-
浅拷贝:通过一个参数给另一个参数赋值后,改变新的参数,原有参数也会被修改。引用数据类型都是浅拷贝。
// 对象深拷贝 // 通过assign函数 let newObj = Object.assign({}, obj); // 自定义函数实现对象深拷贝 let deepCopy = (target, source) => { for (let key in source){ if (source[key] instanceof Object){ target[key] = new source[key].constructor; deepCopy(target[key], source[key]); } else { target[key] = source[key]; } } return target; }