Я исследую геттеры и сеттеры в JavaScript и насколько хорошо они сочетаются с функциями распространения для расширения объектов, такими как $ .extend из jQuery и _.extend в Underscore. Настройка кода выглядит следующим образом:
var test = {
get size() { return this._size; },
set size(val) { this._size = val; },
}
test.size = "LARGE";
console.log(test.size);
//$.extend(test, { get size() { return "MEDIUM"; } });
_.extend(test, { get size() { return "MEDIUM"; } });
console.log(test.size);
test.size = "SMALL";
console.log(test.size);
В Chrome и Firefox я получаю:
LARGE
MEDIUM
SMALL
Может кто-нибудь объяснить мне, что там происходит? Почему после вызова исходного метода задания исходный метод получения также восстанавливается?