Геттеры / сеттеры и расширяющие объекты JavaScript

Я исследую геттеры и сеттеры в 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

Может кто-нибудь объяснить мне, что там происходит? Почему после вызова исходного метода задания исходный метод получения также восстанавливается?

6
задан Infeligo 26 March 2011 в 23:43
поделиться