【发布时间】:2011-02-09 15:07:58
【问题描述】:
例如这段代码:
function stuff() {
this.onlyMethod = function () {
return something;
}
}
// some error is thrown
stuff().nonExistant();
有没有办法从对象内部做类似 PHP 的 __call 之类的事情?
function stuff() {
this.onlyMethod = function () {
return something;
}
// "catcher" function
this.__call__ = function (name, params) {
alert(name + " can't be called.");
}
}
// would then raise the alert "nonExistant can't be called".
stuff().nonExistant();
也许我会多解释一下我在做什么。
该对象包含另一个对象,该对象具有可以直接通过该对象访问的方法。但是这些方法对于每个对象都是不同的,所以我不能只是路由它们,我需要能够动态调用它们。
我知道我可以让其中的对象成为主对象stuff.obj.existant() 的属性,但我只是想知道是否可以避免它,因为主对象是一种包装器,只是临时添加了一些功能(同时更容易访问对象)。
【问题讨论】:
-
不能用try catch吗?还是我错过了什么?
-
它必须发生在函数内部。
-
我会补充一点,在最新版本的 JS/ES 中,实际上有 getter 和 setter 元方法。
标签: javascript