Javascript中的面向对象编程
考虑一个OOP模型。我想实施,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
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次。
希望这能帮助任何像我这样搜索的人:)