db.mongo.insert({name:'mongo'});
> var t=db.mongo.findOne();
> t{ "_id" : ObjectId("5141b98723616e67f947f356"), "name" : "mongo" }
> var d=t > d
{ "_id" : ObjectId("5141b98723616e67f947f356"), "name" : "mongo" }
> d.password=123123> d
{ "_id" : ObjectId("5141b98723616e67f947f356"), "name" : "mongo", "password" : 123}
> t{ "_id" : ObjectId("5141b98723616e67f947f356"), "name" : "mongo", "password" : 123}問題1var d = t是引用賦值嗎 如果是的話,怎么樣不使用引用賦值delete d.passwordtrue> d
{ "_id" : ObjectId("5141b98723616e67f947f356"), "name" : "mongo" }
> d.password=124124> d
{ "_id" : ObjectId("5141b98723616e67f947f356"), "name" : "mongo", "password" : 124, "password" : 124}問題2 我執(zhí)行delete d.password返回 true 說明已經(jīng)刪除,為什么我再執(zhí)行d.password=124會(huì)執(zhí)行兩次添加> d
{ "_id" : ObjectId("5141b98723616e67f947f356"), "name" : "mongo",
"password" : 124,
"password" : 124
}
2 回答

莫回?zé)o
TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
第一個(gè)問題 ... 因?yàn)閮蓚€(gè)條目有同樣的 ObjectId
所以視為是同一條 ...
雖然事實(shí)上不是引用賦值但你可以這么理解 ...
第二個(gè)問題無法復(fù)現(xiàn)所以不知 ...

料青山看我應(yīng)如是
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
對(duì)的,這個(gè)是單純的Javascript語法的問題。在Javascript中是存在這個(gè)問題的。即深復(fù)制和淺復(fù)制的問題:
var cloneObj = function(obj){ var str, newobj = obj.constructor === Array ? [] : {}; if(typeof obj !== 'object'){ return; } else if(window.JSON){ str = JSON.stringify(obj), //系列化對(duì)象 newobj = JSON.parse(str); //還原 } else { for(var i in obj){ newobj[i] = typeof obj[i] === 'object' ? cloneObj(obj[i]) : obj[i]; } } return newobj; };
- 2 回答
- 0 關(guān)注
- 235 瀏覽
添加回答
舉報(bào)
0/150
提交
取消