Javascript - get-Klasse-Inhaber einer Funktion(Methode)

gibt es eine Möglichkeit zu wissen, welche Klasse eigene Funktion?
Beispiel:

function globalFunc(){
 //alert MyObject
}

function MyObject(){
}
MyObject.prototype.test=function(){
 globalFunc();
}

var o=new MyObject();
o.test();  //alert MyObject

Bin jetzt mit diesem workaround:

function globalFunc(){
 alert(globalFunc.caller.__class__);
}

function MyObject(){
}
MyObject.prototype.test=function(){
 globalFunc();
}
MyObject.prototype.test.__class__=MyObject;

var o=new MyObject();
o.test();  //alert MyObject

Aber es ist ein großes problem, diese freuen:

function globalFunc(){
 alert(globalFunc.caller.__class__);
}

function MyObject(){
}
MyObject.prototype.test=function(){
 var temp=function(){
  globalFunc();
 }
 temp(); 
    /* to simulate a simple closure, this may be for example:
     element.addEventListener("click",temp,false);
    */
}
MyObject.prototype.test.__class__=MyObject;

var o=new MyObject();
o.test();  //alert undefined

So, es gibt einen klaren Weg, um diese zu erhalten?
Ich weiß, wo ist das problem(Klasse - Eigenschaft ist eine Eigenschaft, die nur testen und nicht zu warm), aber ich kann nicht hinzufügen Klasse auf temp zu.

Dank.


Danke für die Antwort, einige Klarstellungen.

Ich versuche zu tun, eine persönliche framwork OO orientiert sich mit privaten Mitgliedern.

Also:

globalFunc ist eine Besondere Funktion, die im mit Sie es um "privates" Eigentum, und ich kann nicht rufen Sie es mit call-Methode oder der übergabe der Argumente, die nur Argumente im pass ist "das":

Beispiel, $() ist global

Class({
    public:{
        MyClass:function(){
        },

        setName:function(name) {
            $(this).name=name; //set the private var name
        },
        getName:function(){
            return $(this).name;
        }
    },
    private:{
        name:"UNKNOWN"
    }
})

var o=new MyClass();
o.getName(); //UNKNOWN
o.setName("TEST!!!");
o.getName(); //TEST!!!
o.name; //undefined
$(o).name; //undefined

Werke mit Vererbung, $(), muss ich wissen, was Klasse aufrufen und das Objekt der Klasse.

Alles funktioniert gut, aber wenn ich brauche, um Zugang zu einer privaten Mitglieder in einer clousure muss ich hinzufügen
__Klasse__
Eigenschaft clouser!! Und ich nicht will das!

Nochmals vielen Dank und sorry für mein schlechtes Englisch, ich bin nicht Muttersprache.

  • Sie müssen verlernen, die Idee, dass es so etwas wie eine "Klasse" in JavaScript. Gibt ' s dazu nicht.
InformationsquelleAutor | 2009-10-13
Schreibe einen Kommentar