我有一个返回用户对象的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 :(得分:2)
事实上。对象属性可以冻结,不可删除,无法计算,而不是可配置。您可以查看Object.getOwnPropertyDescriptor
。
console.log( Object.getOwnPropertyDescriptor( user, 'picture' ));
例如。
如果可配置设置为false
,则无法删除该属性。