// 以下方法不改变原来对象
let item = {
name:'张三',
age:'18',
gender:'男'
};
console.log(item) // {age: "18",gender: "男",name: "张三"}
let { age,...params } = item;
console.log(item) // {age: "18",gender: "男",name: "张三"}
console.log(typeof params.age) // undefined
console.log(params) // {gender: "男",name: "张三"}
// 以下方法会直接改变对象
let item1 = {
name:'张三',
age:'18',
gender:'男'
};
console.log(item1) // {age: "18",gender: "男",name: "张三"}
delete item1.name;
console.log(typeof item1.name) // undefined
console.log(item1) // // {age: "18",gender: "男"}
与通常的看法不同,delete
操作符与直接释放内存无关
。内存管理 通过断开引用来间接完成的,查看内存管理
。
delete
操作符会从某个对象上移除指定属性。成功删除的时候会返回 true,否则返回 false。
但是,以下情况需要重点考虑:
如果你试图删除的属性不存在,那么delete
将不会起任何作用,但仍会返回true
如果对象的原型链上有一个与待删除属性同名的属性,那么删除属性之后,对象会使用原型链上的那个属性(也就是说,delete
操作只会在自身的属性上起作用)
任何使用 var
声明的属性不能从全局作用域