在Javascript中删除操作

时间:2016-03-23 10:33:17

标签: javascript

我无法理解javascript中的删除操作。

我有一个像下面这样的对象 -

var object = {"name" : "abc"};

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

如果我删除"名称"来自对象的属性应该从对象中删除它,而不是从原型中删除它,因为原型值仅用于get操作。

之后 -

delete object.name

如果我打印object.name,它会给我“未定义”,而在我看来它应该给我“xyz'”。

首先我认为删除操作只是将object.name的值设置为' undefined',然后object.hasOwnProperty(' name')给我错误。

我错过了什么吗?

1 个答案:

答案 0 :(得分:7)

您理解的漏洞是原型,而不是删除。

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

您需要创建构造函数,将原型放在其上,然后使用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);