molily: Object im Prototyp: Zugriff auf die aufrufende Instanz

Beitrag lesen

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