都有getter和setter你取值是取出来了值。setter才是修改实际内容。你对你的变量修改跟原有的setter没关系。
const realScroll = [
[document.body, 'scrollTop'],
[window, 'pageYOffset'],
[document.documentElement, 'scrollTop']
];
const len = realScroll.length;
let time = setInterval(function() {
let i = 0,
getter = function() {
return realScroll[i][0][realScroll[i][1]];
},
setter = function(v) {
realScroll[i][0][realScroll[i][1]] = v;
},
top;
for (; i < len; i++) {
top = getter();
if (top) {
setter(top - 200);
if (top <= 0) {
clearInterval(time);
}
}
}
});