3

次のような疑似コードがある場合:

  function user(a,b)
  {
    if(! (this instanceof user) ) return new user(a,b);
    this.a = a;
    this.b = b;
    this.showName = function() {
      alert(this.a + " " + this.b);
    };

    this.changeName = function(a,b) {
      this.a = a;
      this.b = b;
    };
  }

私はそれを次のように呼び出すことができます:

user("John", "Smith").showName() // output : John Smith

私は次のようなものが欲しい:

user("John", "Smith").changeName("Adam", "Smith").showName();
4

1 に答える 1

7

すべてのメソッドでオブジェクトを返します。これを「連鎖」と呼びます。

  function user(a,b)
  {
    if(! (this instanceof user) ) return new user(a,b);
    this.a = a;
    this.b = b;
    this.showName = function() {
      alert(this.a + " " + this.b);

      return this; // <--- returning this
    };

    this.changeName = function(a,b) {
      this.a = a;
      this.b = b;

      return this; // <--- returning this
    };
}

デモ: http://jsbin.com/oromed/

于 2012-07-05T12:52:30.703 に答える