既然問題都感到有些不可思議,讓我用一個例子解釋:如何使對象嵌套屬性成爲對象本身的一部分?
給定一個對象是這樣的:
{
id
attributes: {
name
}
}
如果我要訪問的名稱,它必須由thatObject.attributes.name
來完成。
我想實現的是,通過寫thatObject.name
它會自動在attributes屬性中搜索它。
如何才能實現?
既然問題都感到有些不可思議,讓我用一個例子解釋:如何使對象嵌套屬性成爲對象本身的一部分?
給定一個對象是這樣的:
{
id
attributes: {
name
}
}
如果我要訪問的名稱,它必須由thatObject.attributes.name
來完成。
我想實現的是,通過寫thatObject.name
它會自動在attributes屬性中搜索它。
如何才能實現?
使用getter:
var obj = {
attributes: {
name:"somevalue",
otherthing:"flazm"
},
get name() {
return this.attributes.name;
},
};
已經想過。事情是我想爲屬性屬性下的所有屬性做自動化的方式,所以不要爲每個子屬性明確聲明一個getter –
嗯。想過使用jQuery擴展? '.extend(targetObject,attributes)'。你最終會得到具有'attributes'屬性的targetObject - 但它會覆蓋目標上的任何同名屬性。 – sweaver2112
我想通過使用JavaScript吸氣,你可以達到你想要的東西。見例如:
var obj = {
get name() {
return this.attributes.name;
},
attributes : {name : 'the name'}
}
console.log(obj.name); -> the name
通過修改吸氣的身體,你可以返回任何你想要的
這是不可能的。 'thatObject'和'attributes'是完全不同的對象。 'attributes'不知道'thatObject'。如果'attributes'是'thatObject'的原型,那麼它就會有所不同。 –
你可以使用代理來做到這一點,但這不是一個好主意 –
如果'name'存在於多個子對象中怎麼辦?這似乎是一個糟糕的主意。 – tymeJV