在ES6中,是否可以使用这样的代码:
class MyClass
{
foo(bar)
{
console.log(bar + "Bar")
}
foo(bar, baz)
{
console.log(bar + baz + "Bar baz")
}
}
所以当我这样做时:
MyClass.foo("Hello, ", "World and ")
我会得到:
Hello, World and Bar baz
我能做到:
MyClass.foo("Hello, world!")
得到:
Hello, world!Bar
像在Java中一样?
答案 0 :(得分:2)
首先,您需要static
关键字,就像在Java中一样。
class MyClass
{
static foo(bar)
{
console.log(bar + " World")
}
}
MyClass.foo("Hello")
其次,JavaScript不会重载方法。这种方式可以说更灵活 - 你可以自己处理论点。
class MyClass
{
static foo(bar, baz)
{
if (baz) {
console.log(bar + baz + " World");
} else {
console.log(bar + " World");
}
}
}
MyClass.foo("Hello")
答案 1 :(得分:0)
您可以使用default parameters。
class MyClass
{
static foo(bar, baz='')
{
console.log(bar + baz + "Bar" + (baz ? " baz" : ""));
}
}
答案 2 :(得分:0)
据我所知,由于当你调用只接受一个参数的两个参数的函数时,第二个将被设置为undefined,因此不可能。大多数js库通过检查传递的参数类型来做自己的重载风格,如果实现这种情况,这可能会破坏这些库。