[英]How to delete Javascript object property?
我試圖刪除一個對象屬性,它是另一個對象的淺層副本。 但是當我嘗試刪除它時會出現問題,它會在原始值拋出預期輸出時永遠消失。
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.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.