对象如何不可修改?

时间:2012-08-26 00:46:36

标签: javascript node.js

我有一个返回用户对象的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中有什么情况下对象不可修改吗?或者我错过了什么?

1 个答案:

答案 0 :(得分:2)

事实上。对象属性可以冻结不可删除无法计算,而不是可配置。您可以查看Object.getOwnPropertyDescriptor

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

例如。

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