这样的东西适用于全局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 ?
答案 0 :(得分:0)
您唯一的另一个选择是创建自己的Function
工厂函数,因为您已经排除了修改标准Function
工厂使用的机制。当然,这不太可能按照你的意愿去做,因为每个人都必须使用你的工厂。 : - )
修改Function.prototype
不是必然邪恶。 Prototype多年来一直在做这件事,效果很好。
答案 1 :(得分:0)
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循环。