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 中是否存在任何情况?还是我错过了什么?

4

1 回答 1

2

确实。对象属性可以被冻结不可删除、不可枚举和不可配置。你可以去检查一下Object.getOwnPropertyDescriptor

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

例如。

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

于 2012-08-26T00:50:23.150 回答