如何创建像这样的对象
var sum = {
a : 5,
b : 7,
sumar : function()
{
return (this.a+this.b);
},
sumar : function(a, b)
{
return (a+b);
}
}
然后使用这样声明的任何方法?
sumar0 = sum.sumar(); //use the method without parameters
sumar1 = sum.sumar(6,7); //use the method with parameters.
就像"覆盖"方法?这有可能吗?
提前致谢并抱歉我的英文不好
答案 0 :(得分:0)
在Javascript中,不要像在其他语言中那样使用不同的args声明两个同名的方法。相反,您只使用名称声明一个方法,然后在调用函数时检查参数以确定应遵循的行为。
当您声明两个具有完全相同名称的属性时,解释器会忽略其中一个属性,因为Javascript中任何给定属性只能有一个值。
Javascript中有一些关于重载的详细描述,其中有很多例子:
How to overload functions in javascript?
在您的特定情况下,您可以测试传递给方法的多少参数并相应地进行分支:
var sum = {
a : 5,
b : 7,
sumar : function(a, b)
{
if (arguments.length < 2) {
// no arguments passed, use instance variables
return (this.a+this.b);
} else {
// arguments were passed, use them
return (a+b);
}
}
}
document.write(sum.sumar() + "<br>");
document.write(sum.sumar(6, 7) + "<br>");
但是,我必须说,这是一种特别奇怪的方法,有时会对实例属性进行操作,有时则不会。