Может, тут имелись в виду
геттеры?
var example = {
get step_1() {
return '12345'
},
get step_2() {
var key = this.step_1;
console.log(key + ' from "step_1"')
}
};
example.step_2 // 12345 from "step_1"
Впрочем, если настаиваете, можно
привязать example
как
this
с помощью
bind()
// ...
step_2: {
get: (function () {
var key = this.step_1.get();
console.log(key + ' from "step_1"')
}).bind(example), // теперь тут this === example
}
example.step_2.get() // 12345 from "step_1"
Или, чтобы не пачкать руки в машинном масле, можно забиндить потом:
// (исходный код вопроса)
// magic!
Object.keys(example).forEach((key) => {
if ("get" in example[key])
example[key].get = example[key].get.bind(example);
});
example.step_2.get(); // 12345 from "step_1"