我正在尝试删除对象的属性,但该属性根本不会被删除...
我有什么:
var tagFound = yield tags.findById(this.params.tagId);
debug('prior delete: %j', tagFound);
delete tagFound.password;
debug('after delete: %j', tagFound);
我得到了什么:
api_v1 prior delete: {"_id":"55e064e9727b44c32a262c0f","expires":"2015-08-29T13:40:57.673Z","password":"$2a$08$hucJyHIU5gholAB1L.wVKeFoTmvFho9xFiJAAvmwmtKphLuJ9Hq4K","type":"free","name":"teste","__v":0,"visible":true,"locations":[{"latitude":65.9667,"longitude":-18.5333,"_id":"55e064e9727b44c32a262c10","timestamp":"2015-08-28T13:40:57.572Z"}]}
api_v1 after delete: {"_id":"55e064e9727b44c32a262c0f","expires":"2015-08-29T13:40:57.673Z","password":"$2a$08$hucJyHIU5gholAB1L.wVKeFoTmvFho9xFiJAAvmwmtKphLuJ9Hq4K","type":"free","name":"teste","__v":0,"visible":true,"locations":[{"latitude":65.9667,"longitude":-18.5333,"_id":"55e064e9727b44c32a262c10","timestamp":"2015-08-28T13:40:57.572Z"}]}
也许我的眼睛太累了,但我根本无法弄明白,是否有人看到我在这里遗失的明显事物?
更新:我把它放到http://jsfiddle.net/fc8mohwp/,问题是,它在那里工作,但不在这里(iojs)。应该有什么不同吗?
答案 0 :(得分:3)
某些变量无法删除,具体取决于它们的声明方式。例如,您无法删除已在全局范围中定义的变量。
我讨厌发布链接答案,但是这篇博文描述了使用delete的所有规则和边缘情况。对我来说,包含在SO帖子中是相当多的
答案 1 :(得分:1)
这可能有多种原因,例如密码字段无法更改或密码字段来自原型链。
您可以使用Object.getOwnPropertyDescriptor(tagFound, 'password');
答案 2 :(得分:-3)
您可以使用delete
运算符
删除myObject.proportyname;