我试图为遗留的Classic ASP应用程序带来一些理智,作为其中的一部分,我正在尝试为我创建的一些JScript类编写一个Fluent API 。
例如myClass().doSomething().doSomethingElse()
这里概述了这个概念(在 VBScript 中)
这是我的示例JScript类:
var myClass = function () {
this.value = '';
}
myClass.prototype = function () {
var doSomething = function (a) {
this.value += a;
return this;
},
doSomethingElse = function (a, b) {
this.value += (a + b);
return this;
},
print = function () {
Response.Write('Result is: ' + this.value + "<br/>");
}
return {
doSomething: doSomething,
doSomethingElse: doSomethingElse,
print: print
};
}();
/// Wrapper for VBScript consumption
function MyClass() {
return new myClass();
}
在现有的 VBScript 代码中,我尝试将这些方法链接在一起:
dim o : set o = MyClass()
'' This works
o.doSomething("a")
'' This doesn't work
o.doSomething("b").doSomethingElse("c", "d")
'' This for some reason works
o.doSomething("e").doSomethingElse("f", "g").print()
当函数有多个参数时,我得到“ Cannot use parentheses when calling a Sub
” VBScript 错误。奇怪的是,当采用另一种方法时,它似乎有效。
我知道在调用 sub 时应该省略括号。然而:
1、有返回值为什么会被识别为Sub?
2. 有什么办法可以实现我的 Fluent API?