Dies ist eine wirklich schlechte Idee aus der Sicht des Entwurfs.
Wie auch immer, auf Ihre Frage antwortet die kurze Antwort "NEIN, du kannst nicht".
Aber es gibt eine hässliche Antwort, die ja sagt, auf Kosten der unter Berufung auf mit eval, die eine noch schlechteste Idee. Beispiel:
var BOB = {
"name": "bob",
"height": 185
};
var PROPS_src = '{\n'
+ ' "bob": {\n'
+ ' "height": BOB.height\n'
+ ' }'
+ '}';
eval('var PROPS = '+PROPS_src);
console.log("PROPS_SRC:__________________");
console.log(PROPS_src);
console.log("PROPS:______________________");
console.log(PROPS);
// Output:
// PROPS_SRC:__________________
// {
// "bob": {
// "height": BOB.height
// }}
// PROPS:______________________
// { bob: { height: 185 } }
Aber, wie gesagt, das alles ist eine wirklich schlechte Idee. Ich empfehle Ihnen kaum, Ihre Datenstrukturen (und den Code bei Bedarf) so umzugestalten, dass Sie die Datenherkunft zurückverfolgen können.
Für (schnell und schmutzig) Beispiel:
var people = {
bob: {
"name": "bob",
"height": 185
}
};
var props = {
"bob": {
"someConstant": "Hello World",
"_height": "height",
}
};
function getProps(who){
var out = {};
Object.keys(props[who]).map(function(k){
if (k.substring(0,1) == "_") {
out[k.substring(1)] = people[who][props[who][k]];
} else {
out[k] = props[who][k];
};
});
return out;
};
console.log("Raw:", props['bob']);
console.log("Calculated:", getProps('bob'));
// Output:
// Raw: { someConstant: 'Hello World', _height: 'height' }
// Calculated: { someConstant: 'Hello World', height: 185 }
Nein, kannst du nicht! – adeneo
Können Sie erklären, was Sie erreichen möchten? – Rajesh
Sie können alle Objekteigenschaften durchlaufen, um den Pfad zu finden. Aber es wird nur funktionieren, wenn die Werte eindeutig sind – k102