Nie, to nie jest możliwe w JavaScript. Btw, na pewno oznaczało Objects (mapy wartości właściwości) zamiast tablic. Dwa rozwiązania:
zaimplementować obiekt jako Proxy
, którego celem jest dokładnie to, co chcesz zrobić. Jednak jest to tylko wersja robocza i obecnie tylko supported in Firefox' Javascript 1.8.5.
Użyj funkcji gettera z parametrem ciągowym zamiast właściwości obiektu. Ta funkcja może wyszukać klucz wejściowy w wewnętrznym obiekcie "słownikowym", a uchwyt omija programowo - np. tworzenie wartości dynamicznie lub zwracanie wartości domyślnych.
Oczywiście można zbudować fabrykę dla takich funkcji pobierających.
function defaultDict(map, default) {
return function(key) {
if (key in map)
return map[key];
if (typeof default == "function")
return default(key);
return default;
};
}
var a = defaultDict({cat: 1}, 0);
console.log(a('cat')); // 1
console.log(a('dog')); // 0
http://stackoverflow.com/questions/812961/javascript-getters-and-setters-for-dummies – goat
Bergi i Rambo, dzięki, ale nie sądzę, albo z tych robią to, czego szukam. Nie zamierzam zaimplementować a.get ("pies") - szukam ["psa"], aby zwrócić jakąś wartość domyślną. W ten sposób kod korzystający z tablicy może traktować go jako zwykłą tablicę. – Parand