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' ));

例えば。

configurableが に設定されている場合false、そのプロパティは削除できません。

于 2012-08-26T00:50:23.150 に答える