Czy ktoś może mi wyjaśnić, dlaczego ten prosty fragment kodu nie działa?Jak korzystać z pobierających i ustawiających w JavaScript
var user = {
get name() {
return this.name;
},
set name(value) {
this.name = value;
}
};
user.name = 'David';
Kiedy kładę to w konsoli Firebug Firefox 21,0 daje mi ten błąd:
InternalError: too much recursion
this.name = value;
Dlaczego? Jaki jest właściwy sposób definiowania modułów pobierających i ustawiających w JavaScript?
Rekursywnie wywołujesz name() ad infinitum, stąd błąd "zbyt duża rekursja" – stackErr
Problem polega na tym, że próbujesz ustawić właściwość o nazwie "name" w swoim ustawiaczu. Co to zrobi? Będzie wywoływał program ustawiający, który spróbuje ustawić właściwość o nazwie "nazwa". Co to zrobi? ... – Pointy
Problem polega na tym, że 'this.name = value;' wyzwala funkcję 'set name (value)' która ustawia 'this.name = value;', która wyzwala funkcję 'set name (value)' .. Mogę iść dalej. –