2016-12-05 91 views
0

既然問題都感到有些不可思議,讓我用一個例子解釋:如何使對象嵌套屬性成爲對象本身的一部分?

給定一個對象是這樣的:

{ 
    id 
    attributes: { 
    name 
    } 
} 

如果我要訪問的名稱,它必須由thatObject.attributes.name來完成。

我想實現的是,通過寫thatObject.name它會自動在attributes屬性中搜索它。

如何才能實現?

+0

這是不可能的。 'thatObject'和'attributes'是完全不同的對象。 'attributes'不知道'thatObject'。如果'attributes'是'thatObject'的原型,那麼它就會有所不同。 –

+0

你可以使用代理來做到這一點,但這不是一個好主意 –

+3

如果'name'存在於多個子對象中怎麼辦?這似乎是一個糟糕的主意。 – tymeJV

回答

2

使用getter

var obj = { 
    attributes: { 
    name:"somevalue", 
    otherthing:"flazm" 
    }, 
    get name() { 
    return this.attributes.name; 
    }, 
}; 
+0

已經想過。事情是我想爲屬性屬性下的所有屬性做自動化的方式,所以不要爲每個子屬性明確聲明一個getter –

+0

嗯。想過使用jQuery擴展? '.extend(targetObject,attributes)'。你最終會得到具有'attributes'屬性的targetObject - 但它會覆蓋目標上的任何同名屬性。 – sweaver2112

0

我想通過使用JavaScript吸氣,你可以達到你想要的東西。見例如:

var obj = { 
    get name() { 
    return this.attributes.name; 
    }, 
    attributes : {name : 'the name'} 
} 

console.log(obj.name); -> the name 

通過修改吸氣的身體,你可以返回任何你想要的