我无法理解javascript中的删除操作。
我有一个像下面这样的对象 -
var object = {"name" : "abc"};
object.prototype = {"name" : "xyz"};
如果我删除"名称"来自对象的属性应该从对象中删除它,而不是从原型中删除它,因为原型值仅用于get操作。
之后 -
delete object.name
如果我打印object.name,它会给我“未定义”,而在我看来它应该给我“xyz'”。
首先我认为删除操作只是将object.name的值设置为' undefined',然后object.hasOwnProperty(' name')给我错误。
我错过了什么吗?
答案 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);