有人能解释一下如何将函数转换为对象的方法以及将变量转换为对象的参数在jQuery / Javascript中吗?
更有趣的是,为什么我应该这样做?
有人能解释一下如何将函数转换为对象的方法以及将变量转换为对象的参数在jQuery / Javascript中吗?
更有趣的是,为什么我应该这样做?
其中之一是闭包技巧:
function obj(x, y) {
var z = 0;
return {
foo: function() { z += x; return z; },
bar: function() { z *= y; return z; }
};
}
o = obj(2, 3);
o.foo();
这种方法的优点是它相当好地隐藏了内部状态。从"对象"外部直接更改z值并不容易(也许是不可能的,但我不确定)。
在jQuery中:
var MyClass = function( x, y ) {
this.x = x;
this.y = y;
};
$.extend(MyClass.prototype, {
foo: function(z) { ... },
bar: function() { ... }
});
比你所想象的还要多:
var myObject = new MyClass(1, 2);
var MyClass = $.Class.create({
initialize: function(x, y) {
this.x = x;
this.y = y;
}.
foo: function(z) { ... },
bar: function() { ... }
});