我试图删除对象的属性,但属性根本没有被删除…
What I have:
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)。有什么区别吗?
某些变量不能被删除,这取决于它们是如何声明的。例如,不能删除在全局作用域中定义的变量。
我讨厌张贴一个链接答案,但是这篇博文描述了使用delete的所有规则和边缘情况。这是相当多的我包含在一个SO post在Javascript中使用delete
这可能有多种原因,例如密码字段不能更改或密码字段来自原型链。
您可以使用Object.getOwnPropertyDescriptor(tagFound, 'password');
您可以使用delete
操作符从javascript对象中删除属性
删除myObject.proportyname;