2010-12-13 90 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次。
希望这可以帮助任何人搜索我:)