42 lines
589 B
JavaScript
42 lines
589 B
JavaScript
"use strict";
|
|
class Base {}
|
|
Object.defineProperty(Base.prototype, 0, {
|
|
value: 0,
|
|
writable: true,
|
|
configurable: true,
|
|
});
|
|
Object.defineProperty(Base.prototype, 1, {
|
|
value: 1,
|
|
writable: true,
|
|
configurable: true,
|
|
});
|
|
|
|
let i = 0;
|
|
const proper = {
|
|
get prop() {
|
|
return i++;
|
|
},
|
|
};
|
|
|
|
class Obj extends Base {
|
|
update() {
|
|
super[proper.prop]++;
|
|
}
|
|
|
|
update2() {
|
|
super[i]++;
|
|
}
|
|
}
|
|
|
|
const obj = new Obj();
|
|
|
|
obj.update();
|
|
expect(i).toBe(1);
|
|
expect(obj[0]).toBe(1);
|
|
expect(obj[1]).toBe(1);
|
|
|
|
obj.update2();
|
|
expect(i).toBe(1);
|
|
expect(obj[0]).toBe(1);
|
|
expect(obj[1]).toBe(2);
|