Javascript删除对象.财产不工作



我试图删除对象的属性,但属性根本没有被删除…

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;

最新更新