Javascript中的面向对象编程

Javascript中的面向对象编程,javascript,Javascript,考虑一个OOP模型。我想实施, funct1( arg ).subfunct1( arg ); ( 当然像jQuery。其中有$(arg).subfn(arg) 我已经成功地完成了一个子功能。但是, funct1( arg ).subfunct1( arg ); // ==> works fine. funct1( arg ).subfunct1( arg ).subfunct( arg ); // ==> doesnt work. 资料来源是: var funct1=func

考虑一个OOP模型。我想实施,

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

你能说一些补救措施吗。

subfunct1必须
返回此
,才能进行可链接调用。

这只在jQuery中起作用,因为大多数函数都设置为在修改后返回它们所属的jQuery对象(
),以便它们可以链接在一起


您的函数返回什么?

有一种方法可以启用对任何对象的可链接调用,而不返回此

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)();
参考:(中文)

谢谢你的建议:),顺便说一句,我试了几个小时,因为我的概念不强,得到了如下的工作程序

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次。
希望这能帮助任何像我这样搜索的人:)