如何删除Javascript对象属性

How to delete Javascript object property?

本文关键字:Javascript 对象 属性 删除 何删除      更新时间:2023-09-26

我正在尝试删除一个对象属性,该属性是另一个对象的浅层副本。但当我试图删除它时,问题就出现了,当原始值抛出预期输出时,它永远不会熄灭。

var obj = {
    name:"Tom"
};
var newObj = Object.create(obj);
delete newObj.name;//It never works!
console.log(newObj.name);//name is still there

newObj继承自obj

您可以通过访问父对象来删除属性:

delete Object.getPrototypeOf(newObj).name;

(更改父对象)

您也可以通过将值设置为undefined(例如)对其进行阴影处理:

newObj.name = undefined;

但是,如果不从父对象中删除newObj上的属性,就无法删除它,因为原型是在原型链中查找的,直到找到为止。

基本上Object.create会创建一个对象,根据传递的对象设置它的原型,然后它会返回它。因此,如果你想从Object.create的返回对象中delete任何属性,你必须访问它的原型。

var obj = { name:"Tom" };
var newObj = Object.create(obj);
delete Object.getPrototypeOf(newObj).name
console.log(newObj.name); //undefined.