2010-12-13 12 views
1

OOPモデルを検討してください。私は実装したい、Javascriptによるオブジェクト指向プログラミング

funct1(arg).subfunct1(arg); ( 

もちろんjQueryのような。あなたはどこにいますか$(arg).subfn(arg)

私は1つのサブファンクションに対して成功しました。しかし、

funct1(arg).subfunct1(arg); // ==> works fine. 
funct1(arg).subfunct1(arg).subfunct(arg); // ==> doesnt work. 

ソースは次のとおりです。

var funct1=function() { 
    var dummy=new Object(); 
    dummy.subfunct1=bla bla; 
    dummy.subfunct2=bla bla; 
    return dummy; 
} 

あなたはどんな救済は言うことができます。

答えて

3

subfunct1は、連鎖可能な呼び出しを行うためにreturn thisにする必要があります。

0

ほとんどの関数は、変更後に(this)の一部であるjQueryオブジェクトを返すようにセットアップされているため、jQueryでのみ機能し、それらを一緒にチェーンすることができます。

関数は何を返しますか?

0

任意のオブジェクトreturn thisせずにチェーン可能呼び出し可能にするための方法があります:

function chain(obj) { 
    return function() { 
     var Self = arguments.callee; Self.obj = obj; 
     if(arguments.length==0) return Self.obj; 
     Self.obj[arguments[0]].apply(Self.obj,[].slice.call(arguments,1)); 
     return Self; 
    } 
} 

使用法:

function ClassA() { 
    this.prop1 = null; 
    this.prop2 = null; 
    this.prop3 = null; 
} 

ClassA.prototype = { 
    method1: function(argu) {this.prop1 = argu;}, 
    method2: function(argu) {this.prop2 = argu;}, 
    method3: function(argu) {this.prop3 = argu;} 
} 

var a = new ClassA(); 
chain(a)('method1',4)('method2',5)('method3',6)(); 

REF:http://www.javaeye.com/topic/748348(中国語)の提案のための

0

おかげで: )、btw私は概念的に強くないので、私は数時間を試して、次のような作業手順を得ました。

var funct1=function() { 
    var dummy=new Object(); 
    var clone=dummy; 
    dummy.subfunct1=bla bla; //you have to return every time the clone object 
    dummy.subfunct2=bla bla; //you have to return every time the clone object 
    return dummy; 
} 

したがって、関数は(とにかく)n回チェーン化されます。
これは私として検索する人に役立ちます。

関連する問題