我可以在JavaScript中定义一个“回退”方法吗?
Can I define a "fallback" method in JavaScript?
是否可以(以高性能的方式)在JavaScript中定义"回退"方法?
例如
function MyObject () {
/* what do i have to add here to have my defaultMethod? */
}
var obj = new MyObject ();
obj.doesntExistInMyObject (); // I want defaultMethod to be called
obj.doesntExistEither (); // I want defaultMethod to be called, too
即:我希望每当我编写obj.calledMethod ();
和obj.calledMethod == undefined
时调用defaultMethod
,但我不想检查调用代码中的undefined
。
JavaScript 目前没有这个功能。不过,它很可能在下一个版本中通过代理。所以在那之前,要做到这一点,你必须做一些相当丑陋的事情,比如:
MyObject.prototype.ex = function(fname) {
var f = this[fname],
args = Array.prototype.slice.call(arguments, 1);
if (typeof f === "function") {
return f.apply(this, args);
}
return this.defaultMethod.apply(this, args);
};
。并像这样使用它:
var obj = new MyObject();
obj.ex("doesntExistInMyObject", "arg", "arg");
(ex
"执行",因为call
太容易与Function#call
混淆。
相关文章:
- 什么是HTML5画布标记的回退
- 如何在XHTML中添加jQuery CDN回退
- 当CDN加载失败时,为字体添加一个本地CSS回退
- HTML5 视频的回退图像
- 同时使用回退和 JavaScript.什么是正确的方法
- Javascript “替换”替换回退
- jQuery CDN超时回退
- 悬停状态指针事件:无Javascript回退
- IE8 内联尝试的 SVG 回退
- 设置计时器以等待为flash回退视频播放器加载swfobject脚本
- 如何为未加载、加载时间过长和被阻止的css文件编写回退
- 如何回显一个Javascript函数的和
- HTML5视频回退/备份图像不合适..
- IE8 和控制台.log - 如果开发人员控制台未打开,则回退到存根
- href:链接回上一个页面上的某个类
- 咕噜咕噜浏览器化 - 设置包含,回退路径
- 现代化与仅为CSS中的前缀提供回退.哪一个,为什么
- 我可以在JavaScript中定义一个“回退”方法吗?
- 我如何使用Javascript创建一个回退iframe
- 引导-当有一个图像加载错误时回退