Tengo un prototipo de cadena personalizado que realiza algunas acciones en una cadena;
String.prototype.norm_to_ascii=function(){return unescape(encodeURIComponent(this))};En mi ejemplo, la cadena a la que quiero aplicar el prototipo es una propiedad de objeto global que vive fuera del objeto SampleObject. En mi código real, sería referenciado así;
var userObject = { name: "SomeName", id: "SomeID" }Funciona en todas partes en mi proyecto (otros archivos js) excepto dentro de un método de objeto particular;
var SampleObject = { //This is in it's own js file called sampleobject.js test: 0, doStringThings { let something = userObject.id.norm_to_ascii() //RETURNS userObject.id.norm_to_ascii is not a function } }Entonces, en SampleObject, necesito usar la identificación, por ejemplo, pero necesito hacer una decodificación básica del valor de identificación que está en el objeto de usuario, que es lo que hace el prototipo de cadena.
Puedo usar este prototipo de cadena en otro lugar. Esto está en una extensión de Chrome, por lo que he definido el prototipo en el trabajador del servicio y se puede usar en las páginas emergentes y de contenido, así como en el trabajador del servicio, por lo que debe tener que ver con el método del objeto, pero no puedo entender ¿por qué? ¿Alguien puede ofrecer alguna sugerencia para exponer ese prototipo al método del objeto sin tener que redefinirlo?
EDITAR Debería haber sido más claro en mi explicación. Actualicé mi ejemplo anterior.
te olvidas de this
this.otherTestValue.norm_to_ascii()