3


2

jQuery / Javascript関数をメソッドに変換する方法

関数をメソッドに、変数をjQuery / Javascriptのオブジェクトのパラメーターに変換する方法を説明できる人はいますか?

そしてさらに面白い*なぜ*それをする必要がありますか?

2 Answer


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

またはhttp://plugins.jquery.com/project/HJS[HJS plugin]を使用:

var MyClass = $.Class.create({
  initialize: function(x, y) {
    this.x = x;
    this.y = y;
  }.
  foo: function(z) { ... },
  bar: function() { ... }
});