在Javascript中删除操作

Ris*_*are 1 javascript

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

我有一个像下面的对象 -

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

object.prototype = {"name" : "xyz"};
Run Code Online (Sandbox Code Playgroud)

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

之后 -

delete object.name
Run Code Online (Sandbox Code Playgroud)

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

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

我错过了什么吗?

Que*_*tin 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);
Run Code Online (Sandbox Code Playgroud)