1

次を返す方法でオブジェクトを構築することは可能ですか?

baseObject.foo;   // return a string describing what foo does
baseObject.foo(); // execute the foo function

baseObject.bar;   // bar description
baseObject.bar(); // execute bar

更新:JavaScriptメソッドのオーバーロードは近いですが、私が探しているものではありません。

Update2:jsfiddle(以下に提供されるソリューションの)。

4

2 に答える 2

6

toString関数のデフォルトのメソッドを上書きできます。

baseObject.foo = function () { console.log('executing foo') }
baseObject.foo.toString = function () { return 'This function outputs "executing foo"'; }
于 2011-06-08T08:01:59.470 に答える
4

baseObject.foo関数である必要があります。そうでない場合、関数を呼び出すことができません。影響を与えることができるのは、メソッドをオーバーライドすることによって、この関数を文字列に強制変換する方法だけtoString()です。デフォルトでtoString()は関数のソースコードを返しますが、代わりに別のものを返すようにすることができます。

baseObject.foo = function() {
    // Do something
}
baseObject.foo.toString = function() {
    return "Function does something";
}
alert(baseObject.foo);
于 2011-06-08T08:05:47.847 に答える