Gibt es eine Möglichkeit, aus dem Objekt heraus, bei welchem this das übergelagerte Objekt referenziert, wieder auf die aufrufende Instanz, in diesem Fall den String "test" zu kommen?
Kurze Antwort: Nein.
Lange Antwort: Jedenfalls nicht so einfach.
Du könntest eine Funktion daraus machen:
String.prototype.foo = function () {
var string = this,
func = function () {
alert(this);
},
boundFunc = function () {
func.apply(string);
};
return {
bar : boundFunc
};
};
"test".foo().bar()
Alternativ kannst du eine einzelne String-Instanz zu erweitern:
function MyString (string) {
string = Object(string);
string.foo = {
bar : function () {
alert(string);
}
};
return string;
};
var str = MyString("test");
str.foo.bar();
Problem: String-Primitive wird in ein Object umgewandelt. Bei der nächsten Gelegenheit (z.B. durch Operatoren wie +=) wird es wieder in einen Primitive zurückgewandelt und verliert die Erweiterung.
Such mal im Forumsarchiv, da wurden solche Erweiterungen für Strings und Numbers schon öfters diskutiert.
Mathias