如何删除Javascript对象属性?

fru*_*tjs 13 javascript

我试图删除一个对象属性,它是另一个对象的浅层副本.但是当我尝试删除它时会出现问题,它会在原始值抛出预期输出时永远消失.

var obj = {
    name:"Tom"
};

var newObj = Object.create(obj);
delete newObj.name;//It never works!

console.log(newObj.name);//name is still there
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 14

newObj继承自obj.

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

delete Object.getPrototypeOf(newObj).name;
Run Code Online (Sandbox Code Playgroud)

(更改父对象)

您也可以通过将值设置为undefined(例如)来遮蔽它:

newObj.name = undefined;
Run Code Online (Sandbox Code Playgroud)

但是你不能删除newObj上的属性而不从父对象中删除它,因为原型被查找原型链直到找到它.