这是js gurus的问题。我想在编码如下的js模块中启用方法链接。我也希望每种方法都能够返回各种值的对象字面值。在如何编码的上下文中,我将如何启用函数链,例如method2()。method3()
谢谢!
var module1Constructor = (function() {
// methods:
var init = function() {
var someValue = 'value';
method2().method3(); // chained method calls
return {module1:'iDontKnow',returnedValue1:someValue}; // how to pass value back to enable function chaining?
}; // init
var method2 = function() {
var someValue = 'value';
return {module1:'iDontKnow',returnedValue1:someValue}; // how to pass value back to enable function chaining?
}; // method2
var method3 = function() {
var someValue = 'value';
return {module1:'iDontKnow',returnedValue1:someValue}; // how to pass value back to enable function chaining?
}; // method3
return function module1Constructor() {
this.init = init;
} // return function module1Constructor() {
})(); // module1Constructor
var module1 = new module1Constructor;
module1.init();
答案 0 :(得分:0)
如果用户无法访问方法链接,该如何进行链接? 所以你可能想写一个函数的原型,使它成为一个常规的构造函数:
function module1Constructor(){
//...
}
module1Constructor.prototype={
test:1,
a:function(){
alert(this.test++);
return this;
},
//extended
b:function(){
return Object.assign(new module1Constructor(),this,{c:alert});
}
};
像这样使用:
test=new module1Constructor().a().a().a().a();
test.a().c();//doesnt work
test.a().b().c();//does work
test.a().b().a();
答案 1 :(得分:0)
var method2 = function() {
var someValue = 'value';
return {module1:'iDontKnow',returnedValue1:someValue, method3:method3};
}
答案 2 :(得分:0)
我要关闭这个问题。回到"绘图板" ...感谢您的评论。经过进一步的研究,我发现许多人都在寻求和我一样的东西:结构性的"起动器"代码模板,它结合了揭示模块模式的封装优势,可能具有基于原型的继承性能。我想我正在寻找一个"金发女郎"可维护性/可读性和性能之间的模式。