我试图删除一个对象属性,它是另一个对象的浅层副本.但是当我尝试删除它时会出现问题,它会在原始值抛出预期输出时永远消失.
var obj = {
name:"Tom"
};
var newObj = Object.create(obj);
delete newObj.name;//It never works!
console.log(newObj.name);//name is still thereRun 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上的属性而不从父对象中删除它,因为原型被查找原型链直到找到它.