如何在不修改全局Function.prototype的情况下创建函数的继承属性?
How can I create inherited properties of functions without modifying the global Function.prototype?
对于全局函数Function.prototype.
Function.prototype.aaa = 1
(function () {}).aaa // => 1
但是有没有一种方法可以在不改变Function.prototype的情况下放置函数的继承属性?
function MyFunction () { return function () {} }
MyFunction.prototype.bbb = 2
// Can I have (new MyFunction).bbb ?
您唯一的其他选择是创建您自己的Function
工厂函数,因为您已经排除了修改标准Function
工厂使用的机制。当然,这不太可能达到你想要的效果,因为每个人都必须使用你的工厂。: -)
修改Function.prototype
不一定是邪恶的。Prototype已经这么做很多年了,而且大部分效果都不错。
function Wrap() {
var f = new Function;
/* for (var k in Wrap.prototype) {
f[k] = Wrap.prototype[k];
}
return f; */
// return $.extend(f, Wrap.prototype);
return _.extend(f, Wrap.prototype);
}
Wrap.prototype.foo = 42;
(Wrap()).foo === 42; // true
创建一个新函数,然后用Wrap.prototype中的属性扩展该函数。
使用jQuery、下划线或简单的for循环。
相关文章:
- 如何在不使用 new 关键字的情况下从函数创建对象
- 如何在没有插件和Wordpress的情况下创建共享社交媒体
- 如何在不编写样板代码的情况下在Node中创建可重用函数
- 如何在不创建格式错误的HTML标记的情况下分解字符串
- 如何创建只允许用户在选中前一个复选框的情况下选择复选框的复选框验证
- 如何在不使用iframe或库的情况下创建剪切显示窗口区域
- 如何避免JSON.stringify在特殊情况下返回undefined,从而为JSON.parse创建字符串失败
- 是否可以在不创建svg对象的情况下创建捕捉元素?[snap.svg]
- 如何在我的情况下创建加载脚本
- 如何在不使用 express 的情况下在 nodejs 中创建会话
- 如何在不创建新元素的情况下修改 DOM 元素的位置
- 使用javascript创建Form元素,并在不重定向/刷新的情况下提交
- 如何在不创建用户帐户的情况下,允许每人(电脑/手机)在网站上的1篇帖子上只投1票
- 在forEach循环中创建promise,并在不嵌套的情况下使用它们
- 如何在不完成添加序列的情况下从rxjs创建数组
- 我可以在不创建延期的情况下报告Q承诺进度吗
- 如何在不创建数组的情况下使用NgFor来生成矩阵UI模式
- 如何在没有类属性的情况下使用Rangy.js创建标记
- 在不使用object.Create的情况下创建具有null原型的javascript对象
- Mongoosejs:如何在没有Schema的情况下创建模型