在Javascript中删除操作

Delete operation in Javascript

本文关键字:操作 删除 Javascript      更新时间:2023-09-26

我很难理解javascript中的删除操作。

我有一个对象如下-

var object = {"name" : "abc"};
object.prototype = {"name" : "xyz"};

如果我从对象中删除"name"属性,它应该从对象中而不是从原型中删除,因为原型值只在get操作中使用。

所以在之后

delete object.name

如果我打印object.name,它会给我"undefined",而在我看来,它应该给我"xyz"。

首先,我认为删除操作只是将object.name的值设置为"undefined",但随后object.hasOwnProperty("name")给了我false。

我遗漏了什么吗?

你理解的漏洞在于原型,而不是删除。

原型上的值出现在对象的实例上,而不是原型属性所属的对象。

您需要创建一个构造函数,将原型放在上面,然后使用new从该函数实例化一个对象。

function MyObject (name) {
  this.name = name;
}
MyObject.prototype.name = "xyz";
var instance = new MyObject("abc");
document.write(instance.name);
document.write("<br>");
delete instance.name;
document.write(instance.name);