【发布时间】:2012-05-02 20:06:22
【问题描述】:
例如,这是我的“Hello”机器:
hello_machine = new HelloMachine;
此时,如果有人尝试访问 hello_machine 中的属性,我希望发生以下情况。
hello_machine.fred;
hello_machine.greetings(); // output: Hi, fred!
hello_machine.george;
hello_machine.greetings(); // output: Hi, george!
我希望这种情况自动发生,无论他们尝试访问的属性是什么。 我不想要任何硬编码。
这是我想要调用的函数:
function set_buddy(name) {
buddy = name;
}
问候语如下:
function greetings() {
alert('Hi, ' + buddy);
}
显而易见的解决方案是不要这样做。这是一种糟糕的做法,它改变了 Javascript 的基本行为方式。但是,我处于这种行为非常棒的位置。
我的直觉告诉我这是不可能的,互联网也无法说服我相信这个事实(我的脑袋告诉我,我问这个问题是个傻瓜)。但我知道 Javascript 是一个善变的情妇,如果这个功能存在,我也不会感到惊讶。因此,如果有人知道我可以实施任何黑客攻击来获得这种行为,我一定会很感激。
【问题讨论】:
-
你想要属性;设置者和获取者。我知道的唯一方法是使用代理。