1

Actionscript 3 では、ドキュメントに次のように記載されているのに、getDefinitionByName() がオブジェクトを返すのはなぜですか。

name パラメータで指定されたクラスのクラス オブジェクトへの参照を返します。

それに基づいて、返されるオブジェクトはオブジェクトではなくクラスである必要があると結論付けます。なぜそうではないのか、誰かが私に教えてもらえますか?

4

3 に答える 3

7

getDefinitionByName は、getDefinitionByName('flash.utils.getDefinitionByName') などの関数を返すこともできます。ただし、これは名前空間レベルの関数でのみ機能し、静的クラス メソッドでは機能しません。

于 2009-03-09T01:31:33.330 に答える
6

メソッド シグネチャにもかかわらず、 getDefinitionByName はClassを返します。誤解を招くような署名は、Class オブジェクトの前に存在するメソッドによるものだと思います (匿名/拡張オブジェクト インスタンスを返すために使用された場合)。

于 2009-03-03T09:52:58.527 に答える
2

おそらくAdobeは、この関数がFlashPlayerの将来のバージョンで異なる値を返す可能性があると考えていました。たとえば、ActionScriptのベースとなっている標準であるECMAScriptは、歴史的Functionに、クラスのようなオブジェクトの基礎としてプロトタイプを備えたオブジェクトを使用してきました。ECMAScript標準の最新バージョンの議論中に、実行時に関数ベースのクラスを「フリーズ」してコンパイル時Classオブジェクトのようなものにするための推測がありました。それらの定義名も指定できるとしたらどうでしょうか。Classそれらはこの時点で実際にタイプですか、それともまだタイプFunctionですか?私の意見では、おそらく後で。'Class'と'Function'の両方の参照は、として一般化できるObjectため、このコンテキストでは戻り型が意味をなします。

注:この説明は、 ECMAScript仕様wikiおよびさまざまな委員会メンバーのブログで読んだ内容に基づく純粋な推測です。

于 2009-03-05T00:00:43.177 に答える