3

関数があるとしましょう:

var func = function(param){return param + 1;};

関数がオブジェクトであることを考えると、それにプロパティを追加できます。

func.prop = 'foo';

func(4)との両方func.propが機能するはずです。しかし今、私がオブジェクトを持っているとしましょう:

var obj = {prop: 'foo'};

...そして、インクリメント関数として呼び出し可能にしたい。これは可能ですか?

4

2 に答える 2

6

[オブジェクト] をインクリメント関数として呼び出し可能にしたい。これは可能ですか?

いいえ。

Object コンストラクターによって作成されたオブジェクトは、内部[[Call]]メソッドを持たないため、呼び出すことができません。[[Call]]関数を関数にする特別なメソッドです。Object コンストラクターは関数ですが、関数ではなく単純なオブジェクトを作成することに注意してください。

関数は から継承しObject.prototypeますが、関数コンストラクターによって作成されます。組み込みコンストラクターには、ECMA-262 によって追加の権限が与えられます。:-)

于 2012-11-10T03:13:17.837 に答える