Foros del Web » Creando para Internet » Flash y Actionscript »

Problema con prototype

Estas en el tema de Problema con prototype en el foro de Flash y Actionscript en Foros del Web. Lo que yo quiero es añadir un método a la clase String que permita convertir los carácteres especiales de una cadena a sus entidades HTML ...
  #1 (permalink)  
Antiguo 13/06/2006, 15:40
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Problema con prototype

Lo que yo quiero es añadir un método a la clase String que permita convertir los carácteres especiales de una cadena a sus entidades HTML correcpondientes (como la función htmlspecialchars de PHP)

Para ello tengo lo siguiente (en un archivo externo que incluyo con #include):
Código:
//Sustituye todas las apariciones de una cadena en otra
String.prototype.str_replace = function(cadena_buscada:String, cadena_sustituta:String):String{
        var text:String = this.valueOf()
        var end:Number = text.indexOf(cadena_buscada)
        while(end!=-1){
                text = text.substring(0, end)+cadena_sustituta+text.substring(end+cadena_buscada.length)
                end = text.indexOf(cadena_buscada, end+cadena_sustituta.length)
        }
        return text
}

//Convierte carácteres especiales a entidades HTML
String.prototype.htmlSpecialChars = function():String{
        var text:String = this.valueOf()
        text = text.str_replace("&", "&")
        text = text.str_replace("\"", """)
        text = text.str_replace("'", "'")
        text = text.str_replace("<", "&lt;")
        text = text.str_replace(">", "&gt;")
        return text
}
El código me genera los siguientes errores...

Cita:
**Error** C:\Documents and Settings\Valentín\Escritorio\String.prototype.as: Línea 15: No hay ningún método que lleve por nombre 'str_replace'.
text = text.str_replace("&", "&amp;")

**Error** C:\Documents and Settings\Valentín\Escritorio\String.prototype.as: Línea 16: No hay ningún método que lleve por nombre 'str_replace'.
text = text.str_replace("\"", "&quot;")

**Error** C:\Documents and Settings\Valentín\Escritorio\String.prototype.as: Línea 17: No hay ningún método que lleve por nombre 'str_replace'.
text = text.str_replace("'", "'")

**Error** C:\Documents and Settings\Valentín\Escritorio\String.prototype.as: Línea 18: No hay ningún método que lleve por nombre 'str_replace'.
text = text.str_replace("<", "&lt;")

**Error** C:\Documents and Settings\Valentín\Escritorio\String.prototype.as: Línea 19: No hay ningún método que lleve por nombre 'str_replace'.
text = text.str_replace(">", "&gt;")

Total de errores de ActionScript: 5 Errores comunicados: 5
Pero, si cambio en la línea 14 el

Código:
var text:String = this.valueOf()
por

Código:
var text = this.valueOf()
(es decir, que text no sea una instancia de la clase String, sino una cadena normal y corriente...) funciona a la perfección...

Mi duda es, ¿porqué ocurre esto? En algunos foros sobre flash me han dicho que no es buena idea extender una clase con prototype, sino que es mejor usar la herencia... aunque no me interesa mucho la idea sobre todo porque me gustaría disponer siempre de la clase String, y si me surge la necesidad de utilizar los métodos creados por mí los incluyo con un #include al principio y no hay problema (que yo sepa... corregidme). Si utilizo siempre una clase nueva, tipo MyString o algo así, me surgen problemas por todos laos...

Escribo aquí para conseguir más opiniones (concuerden o no con las que ya he recibido...).

Gracias por su tiempo...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:29.