是否可以以返回以下内容的方式构造对象:
baseObject.foo; // return a string describing what foo does
baseObject.foo(); // execute the foo function
baseObject.bar; // bar description
baseObject.bar(); // execute bar
更新:JavaScript Method Overloading已接近,但不是我想要的。
Update2:jsfiddle(以下提供的解决方案)。
答案 0 :(得分:6)
您可以覆盖函数的默认toString
方法:
baseObject.foo = function () { console.log('executing foo') }
baseObject.foo.toString = function () { return 'This function outputs "executing foo"'; }
答案 1 :(得分:4)
baseObject.foo
必须是一个函数,否则你将无法调用它。您可以影响的唯一方法是通过覆盖其toString()
方法将此函数强制转换为字符串。默认情况下,toString()
返回函数源代码,您可以返回其他内容。
baseObject.foo = function() {
// Do something
}
baseObject.foo.toString = function() {
return "Function does something";
}
alert(baseObject.foo);