2016-12-05 12 views
0

質問は少し奇妙に感じることができるので、私は一例で説明しましょう:オブジェクトのネストされたプロパティをオブジェクト自体の一部にする方法はありますか?

は、このようなオブジェクトを考える:

{ 
    id 
    attributes: { 
    name 
    } 
} 

を私は名前にアクセスしたい場合は、それがthatObject.attributes.nameによって行われなければなりません。

私が達成したいことは、thatObject.nameをwrittingすることによって自動的に属性プロパティでそれを検索することです。

どのように達成することが可能ですか?

+0

を好き返すことができます。 'thatObject'と' attributes'は全く異なるオブジェクトです。 'attributes'は' thatObject'の知識がありません。 '属性'が 'thatObject'のプロトタイプだったなら、それは違うでしょう。 –

+0

これはプロキシを使って行うことができますが、良い考えではありません –

+3

'name 'が複数のサブオブジェクトに存在するとどうなりますか?これは悪い考えのように思えます。 – tymeJV

答えて

2

getterを使用します。

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

既にそれについて考えました。つまり、属性プロパティのすべてのプロパティが自動化されているため、サブプロパティのゲッタを明示的に宣言しないようにしたいのです。 –

+0

Hmm。 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 

を、あなたはそれが不可能である

関連する問題