考虑一个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;
}
你能说出任何补救措施。
答案 0 :(得分:3)
subfunct1
必须return this
才能进行可链接的调用。
答案 1 :(得分:0)
这只适用于jQuery,因为大多数函数都设置为在修改后返回它们属于(this
)的jQuery对象,以便它们可以链接在一起。
你的功能有什么回报?
答案 2 :(得分: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)();
答案 3 :(得分: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次
希望这有助于任何搜索我的人:)