Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript删除object.property不起作用_Javascript_Node.js - Fatal编程技术网

Javascript删除object.property不起作用

Javascript删除object.property不起作用,javascript,node.js,Javascript,Node.js,我正在尝试删除对象的属性,但该属性根本没有被删除 我所拥有的: 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",

我正在尝试删除对象的属性,但该属性根本没有被删除

我所拥有的:

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"}]}
也许我的眼睛太累了,但我就是想不出这一点,有人看到我在这里错过的东西吗


更新:我把它放进了,问题是,它在那里工作,但不是在这里(iojs)。是否存在差异?

某些变量不能删除,具体取决于它们的声明方式。例如,您不能删除已在全局范围中定义的变量

我讨厌发布链接答案,但这篇博文描述了使用delete的所有规则和边缘案例。这对我来说是一个相当大的一点,包括在一个SO的职位


这可能有多个原因,例如密码字段无法更改或密码字段来自原型链


您可以使用
Object.getOwnPropertyDescriptor(tagFound,'password')调试它

您可以使用运算符从javascript对象中删除属性


删除myObject.proportyname

delete
返回什么?tagFound
来自哪里?如果密码字段来自HTML标记,则无法将其删除。只能删除用户定义的属性。至少在浏览器中是这样,但在节点中可能也发生了类似的情况。Delete返回true。tagFound来自mongoDB文档对象属性可能不可写。请删除
node.js
标记并插入
io.js
tagFound是在本地声明的,但它来自yield语句,这可能是问题吗?@rbaprado可能。tags.findById来自哪里?这是您试图删除的DOM元素吗?tags.findById是mongoose的findOne的包装,没有DOMhere@rbaprado明白了。很难说。猫鼬库可能在做一些愚蠢的事情来保护它的对象。您可以尝试通过将对象转换为JSON字符串或从JSON字符串转换为对象来进行深度复制。这可能会允许您声明变量的本地副本,从而允许您删除它。尽管它很难看,但tagFound=JSON.parse(JSON.stringify(mobtagFound))做到了这一点,谢谢!delete是一个运算符,而不是一个函数。因此,这应该是
delete myObject.propertyname
,然后它来自原型。