Per esempio questo codice:C'è un modo per catturare un tentativo di accedere a una proprietà o un metodo inesistente?
function stuff() {
this.onlyMethod = function() {
return something;
}
}
// some error is thrown
stuff().nonExistant();
Esiste un modo per fare qualcosa come PHP di __call
come un ripiego da dentro l'oggetto?
function stuff() {
this.onlyMethod = function() {
return something;
}
// "catcher" function
this.__call__ = function (name, params) {
alert(name + " can't be called.");
}
}
// would then raise the alert "nonExistant can't be called".
stuff().nonExistant();
Forse ti spiego un po 'di più quello che sto facendo.
L'oggetto contiene un altro oggetto, che ha metodi che dovrebbero essere accessibili direttamente attraverso questo oggetto. Ma questi metodi sono diversi per ogni oggetto, quindi non posso solo indirizzarli, devo essere in grado di chiamarli dinamicamente.
So che potrei semplicemente rendere l'oggetto al suo interno una proprietà dell'oggetto principale stuff.obj.existant()
, ma mi chiedo solo se potrei evitarlo, poiché l'oggetto principale è una specie di wrapper che aggiunge solo alcune funzionalità temporaneamente (e rende più facile l'accesso all'oggetto allo stesso tempo).
Non puoi usare try catch? O mi manca qualcosa? – Bipul
deve avvenire all'interno della funzione. –
Aggiungo che nelle versioni più recenti di JS/ES, ci sono in effetti meta-metodi getter e setter. –