Pregunta

En Actionscript 3, ¿por qué getDefinitionByName () devuelve un objeto cuando los documentos dicen:

  

Devuelve una referencia al objeto de clase de la clase especificada por el parámetro de nombre.

En base a eso, llegaría a la conclusión de que el objeto devuelto debería ser Clase en lugar de Objeto. ¿Puede alguien aclararme por qué no es así?

¿Fue útil?

Solución

getDefinitionByName también puede devolver una función, como getDefinitionByName ('flash.utils.getDefinitionByName'). Sin embargo, esto solo funciona en funciones de nivel de espacio de nombres, no en métodos de clase estáticos.

Otros consejos

A pesar de la firma del método, getDefinitionByName devuelve Class . Creo que la firma engañosa se debe al método existente antes del objeto Class (cuando se utiliza para devolver una instancia de objeto anónimo / extendido).

Quizás Adobe consideró que esta función podría devolver valores diferentes en una versión futura de Flash Player. Por ejemplo, ECMAScript, el estándar en el que se basa ActionScript, ha usado históricamente los objetos Function con prototipos como base para los objetos de clase. Durante las discusiones de las versiones más recientes del estándar ECMAScript, ha habido sugerencias de " congelación " clases basadas en funciones en el tiempo de ejecución para convertirlas en algo así como objetos de Class en tiempo de compilación. ¿Y si también pudieras especificar un nombre de definición para ellos? ¿Son realmente de tipo Class en este punto, o son todavía o tipo Function ? Probablemente lo más tarde, en mi opinión. Las referencias de 'Clase' y 'Función' se pueden generalizar como Object , de modo que el tipo de devolución tenga sentido en este contexto.

Nota: esta explicación es puramente especulativa basada en lo que he leído en la wiki de especificación ECMAScript y los blogs de varios miembros del comité.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top