JavaScript - esto de este
String.prototype.foo = {};
String.prototype.foo.bar = function() {
//How can you reference the "grandparent" string?
console.log(this.parent.parent); //obviously, doesn't exist
}
Como en,"Hello, Nurse!".foo.bar()
registraría "¡Hola, enfermera!".
Hará una diferencia si hay control sobre foo?
Edit: Ahí, foo está definido.
Edit2: bien, en lugar dethis.this.this
, this.parent.parent
. Por supuesto, el padre no existe, pero espero que ahora la semántica no se interponga en el camino.
Edit3: no hay un caso específico. Los detalles proporcionados son todo lo que obtuve: hay un objeto foo, parte de un prototipo. @foo.bar
es un método defoo
, y se supone que tiene acceso a sus abuelos. Eso es. Nada más. Esa es toda la información que tengo.
Edit4: Resuelto. Según la respuesta proporcionada (y alguna ayuda de segunda mano de Douglas Crockford):
String.prototype.foo = function() {
var that = this;
return {
bar : function() {
console.log(that.valueOf());
}
}
}
//Called:
"Hello, Nurse!".foo().bar();