我正试图让它发挥作用。
$.fn.createDelegate = function(scope){
var fn = this;
return function() {
return fn.apply(scope, arguments);
}
}
以下版本有效,但我认为它们都是一样的。第一种是写第二种的简写方式。 或许我的想法不正确。
Function.prototype.createDelegate = function(scope){
var fn = this;
return function() {
return fn.apply(scope, arguments);
}
}
当我第一次打电话给第一个时: var delegate = this.myMethod.createDelegate(this); setTimeout(delegate,3000);
它说不是功能。 Function.prototype的第二种方法有效。有人可以解释原因并让我直截了当。
最好将它作为一个小插件,这样就不会被一个大型项目覆盖。
答案 0 :(得分:3)
分配给$.fn
将为您提供jQuery
对象的功能。 jQuery故意不接触原生对象的原型(这是第二个例子所做的)。如果这种代码风格吸引您,那么您可能需要查看Prototype。
答案 1 :(得分:3)
$.fn
是jQuery.prototype
的简写,用于向jQuery选择添加方法。 不是 Function.prototype
的简写。但是,您可以使用内置的jQuery函数$.proxy
,它可以满足您的需求。
你会做这样的事情:
var delegate = $.proxy(this.myMethod, this);
var delegate = $.proxy(this, 'myMethod'); // slightly briefer but less explicit syntax