假設我有一個對象(obj1),obj1中的其中一個值是另一個對象(obj2)。有什麼辦法可以讓obj1(例如obj1.username)中的任何東西都能自動檢查obj2(obj1.ob2.username)嗎?如何鏈接兩個JavaScript對象?
這種情況下的用例是,如果obj1中不存在某些東西,我想在它返回null之前檢查obj2。
實例應用:
var user = {username: "David"} // obj2
var member = {nickname: "Dave", user: user} // obj1
console.log(user.username) // "David"
console.log(user.nickname) // null
console.log(member.username) // "David"
console.log(member.nickname) // "Dave"
這對於在使用Node.js的
- 編輯 -
我忘了注意,成員和用戶從班我使用一個名爲不和諧的應用程序進行交互庫創建。
當一個消息被髮送時,一個事件被觸發,並且我得到了像成員對象那樣的信息(帶有一個到它內部的用戶對象的鏈接)。
Here is the structure of a user.
Here is the structure of a member.
Object.defineProperty(Discord.Member.prototype, 'username', {
get: function() { return this.user.username; },
set: function(newValue) { this.user.username = newValue; }
});
上述方法如預期運作,但是隻爲username
屬性。我考慮將這個應用於用戶的每個屬性,但是當我嘗試遍歷創建的用戶的屬性時,有些(如.createdAt
)未顯示在列表中。
我明白我可以手工完成並手工編寫每一個defineProperty,但這裏的想法是用戶會隨着時間的推移而不斷更新新的屬性,所以我更願意按照上面所描述的去做。
如果一個成員是它似乎是原型繼承(或 「類」 一個體面的用例,如果這是用戶如何你滾動)。 –
write user.prototype = member – binariedMe
'{get nickname(){return this.user.username},user}'? – Bergi