Na przykład ten kod:Czy istnieje sposób na złapanie próby uzyskania dostępu do nieistniejącej właściwości lub metody?
function stuff() {
this.onlyMethod = function() {
return something;
}
}
// some error is thrown
stuff().nonExistant();
Czy istnieje sposób, aby zrobić coś podobnego PHP __call
jako awaryjnej z wnętrza obiektu?
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();
Może wytłumaczę trochę więcej, co robię.
Obiekt zawiera inny obiekt, który ma metody, które powinny być dostępne bezpośrednio przez ten obiekt. Ale te metody są różne dla każdego obiektu, więc nie mogę po prostu ich skierować, muszę mieć możliwość wywoływania ich dynamicznie.
Wiem, że mógłbym uczynić obiekt w środku własnością głównego obiektu stuff.obj.existant()
, ale zastanawiam się, czy mógłbym tego uniknąć, ponieważ główny obiekt jest pewnego rodzaju otoką, która chwilowo dodaje trochę funkcjonalności (i ułatwia dostęp do obiektu w tym samym czasie).
Nie możesz użyć próby złapania? Lub czegoś mi brakuje? – Bipul
musi się zdarzyć wewnątrz funkcji. –
Dodam, że w najnowszych wersjach JS/ES są w rzeczywistości meta-metody gettera i settera. –