如何将jQuery / Javascript函数转换为方法

3

有人能解释一下如何将函数转换为对象的方法以及将变量转换为对象的参数在jQuery / Javascript中吗?

更有趣的是,为什么我应该这样做?


1
“为什么要这样做”可以翻译为“为什么使用面向对象编程(OOP)”。 - KARASZI István
2个回答

3

其中之一是闭包技巧:

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值并不容易(也许是不可能的,但我不确定)。


3

在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);

或者使用HJS插件
var MyClass = $.Class.create({
  initialize: function(x, y) {
    this.x = x;
    this.y = y;
  }.
  foo: function(z) { ... },
  bar: function() { ... }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接