2012-08-26 35 views
1

我有一个MongoDB的函数调用返回一个用户对象对象如何不可修改?

User.findOne(condition, function(err, user) { 
    console.log(user) // {username : 'blah', picture : 'blah', _id : 'blah'} 
    delete user.picture; 
}); 

莫名其妙用户对象不能被修改,删除什么都不做。如果我深拷贝一个全新的用户对象

var new_user = {}; 
for (var key in user) 
    new_user[key] = user[key] 

并做删除那里,它的工作原理。有没有什么情况下在Javascript中当对象不可修改?或者我错过了什么?

+0

你能告诉我们创建'user'对象的代码吗? – jfriend00

回答

2

确实。对象属性可以制成冷冻不可删除unenumerable而不是配置。你可以去Object.getOwnPropertyDescriptor查询。

console.log(Object.getOwnPropertyDescriptor(user, 'picture')); 

例如,

如果可配置设置为false,则不能删除该属性。

+0

它正在打印出undefined ... typeof用户是对象... – yngccc

+0

@yngum:你是否在你的'delete'语句之前或之后放置了那个日志? – jAndy

+0

之前..这是有点奇怪.. – yngccc