expect(dummy).toBe(newFunc)
})
+ it('should observe chained getters relying on this', () => {
+ const obj = reactive({
+ a: 1,
+ get b() {
+ return this.a
+ }
+ })
+
+ let dummy
+ effect(() => (dummy = obj.b))
+ expect(dummy).toBe(1)
+ obj.a++
+ expect(dummy).toBe(2)
+ })
+
+ it('should observe methods relying on this', () => {
+ const obj = reactive({
+ a: 1,
+ b() {
+ return this.a
+ }
+ })
+
+ let dummy
+ effect(() => (dummy = obj.b()))
+ expect(dummy).toBe(1)
+ obj.a++
+ expect(dummy).toBe(2)
+ })
+
it('should not observe set operations without a value change', () => {
let hasDummy, getDummy
const obj = reactive({ prop: 'value' })
)
function createGetter(isReadonly: boolean) {
- return function get(target: any, key: string | symbol) {
- // not using Reflect.get here for perf reasons
- const res = target[key]
+ return function get(target: any, key: string | symbol, receiver: any) {
+ const res = Reflect.get(target, key, receiver)
if (isSymbol(key) && builtInSymbols.has(key)) {
return res
}