2010-12-13 71 views
1

考慮OOP模型。我想執行,Javascript中的面向對象編程

funct1(arg).subfunct1(arg); ( 

當然像jQuery。你在哪裏$(arg).subfn(arg)

我已經成功完成了一個子功能。但

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

這隻適用於jQuery,因爲大多數函數都設置爲在修改後返回它們所屬的jQuery對象(this),以便它們可以鏈接在一起。

你的函數返回什麼?

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

裁判:http://www.javaeye.com/topic/748348(在中國)

0

感謝的建議: ),順便說一句,我試了幾個小時,因爲我不是在概念上強大,並得到了如下的工作程序..

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次。
希望這可以幫助任何人搜索我:)