Para ello tengo lo siguiente (en un archivo externo que incluyo con #include):
Código:
El código me genera los siguientes errores...//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("<", "<") text = text.str_replace(">", ">") return text }
Cita:
Pero, si cambio en la línea 14 el**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("&", "&")
**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("\"", """)
**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("<", "<")
**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(">", ">")
Total de errores de ActionScript: 5 Errores comunicados: 5
text = text.str_replace("&", "&")
**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("\"", """)
**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("<", "<")
**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(">", ">")
Total de errores de ActionScript: 5 Errores comunicados: 5
Código:
porvar text:String = this.valueOf()
Código:
(es decir, que text no sea una instancia de la clase String, sino una cadena normal y corriente...) funciona a la perfección...var text = this.valueOf()
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...