这似乎是一个平庸的问题,但我遇到了一个事实,我不知道如何摆脱这种情况:假设我们有这样一个“类”:
function TestClass() {
this.method = function(index) {
alert("index");
};
this.method = function(x, y) {
alert("x, y");
};
}
让我解释一下我想要做什么:
var test = new TestClass();
test.method(1); // Вылезает alert с текстом "index"
test.method(1, 1); // Вылезает alert с текстом "x, y"
也就是说,我正在尝试创建一个具有多个重载的内部方法。很明显,上面的语法只是简单地覆盖了这个即兴类引用的函数。试图这样做:
function TestClass() {
function method(index) {
alert("index");
}
function method(x, y) {
alert("x, y");
}
this.method = method;
}
但是,仍然使用TestClass().method(...)最后指定的重载。
也许这个问题已经被问过了,但我无法谷歌,所以请指导我或分享解决此问题所需的知识)
你不必做重载。在 JS 的任何函数中,arguments 变量都是可用的,它包含一个带有传递参数的类数组对象。也就是说,您可以检查 arguments.length 并通过索引访问参数,就像在数组中一样。
js 中的方法名必须是唯一的,或者你可以即兴重载: