我无法理解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.
我错过了什么吗?
您理解的漏洞是原型,而不是删除.
原型上的值显示在对象的实例上,而不是原型属性所属的对象.
您需要创建一个构造函数,将原型放在其上,然后使用该函数实例化一个对象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)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |