JavaScript删除object.property不工作
我想删除一个对象的属性,但该属性不会被删除…
我拥有的:
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)。 应该有什么区别?
某些variables不能被删除,这取决于它们如何声明的上下文。 例如,不能删除在全局范围内定义的variables。
我讨厌发布一个链接的答案,但是这个博客文章描述了使用delete的所有规则和边缘情况。 对于我而言,包括在SOpost中是相当有点儿的
在Javascript中使用删除
这可能有多个原因,例如密码字段不能更改或者密码字段来自原型链。
你可以用Object.getOwnPropertyDescriptor(tagFound, 'password');
来debugging它Object.getOwnPropertyDescriptor(tagFound, 'password');
您可以使用delete
操作符从javascript对象中删除属性
删除myObject.proportyname;