jest sposób na określenie, która klasa jest funkcją? Przykład:JavaScript - pobierz klasę funkcji (metody)
function globalFunc(){
//alert MyObject
}
function MyObject(){
}
MyObject.prototype.test=function(){
globalFunc();
}
var o=new MyObject();
o.test(); //alert MyObject
teraz im korzystania z tego rozwiązania:
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
Ale nie jest to duży problem, wyglądają następująco:
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
Tak, istnieje wyraźny sposób, aby uzyskać to ? Wiem, gdzie jest problem (klasa właściwość jest właściwością tylko testu, a nie temperatury), ale nie mogę dodać klasy do temp. Też.
Dzięki.
Dzięki za odpowiedź, trochę wyjaśnienia.
Próbuję zrobić osobistą ramkę OO skierowaną do członków prywatnych.
Więc:
globalFunc jest specjalną funkcją, im go używać, aby dostać „prywatny” własność i nie mogę nazwać metodą połączenia lub przechodząc jakieś argumenty, jedyne argumenty im pass jest "to":
przykład, $() jest globalnym
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
do prac z dziedziczenia, $(), muszę wiedzieć, co to klasa i obiekt klasy zadzwonić.
Wszystko działa dobrze, ale jeśli trzeba uzyskać dostęp do prywatnych użytkowników w clousure muszę dodać __class__ właściwość Clouser !! I nie chcę tego!
Jeszcze raz dziękuję i przepraszam za mój zły angielski, nie jestem native speakerem.
Będziesz musiał oduczyć się idei, że istnieje coś takiego jak "klasa" w JavaScript. Nie ma. –