isProxy
根据官方的解释,isProxy
是用来检查对象是否是由 reactive
或 readonly
创建的 proxy。
编写测试
这一节,就可以在之前的单例基础上去添加断言即可
// src/reactivity/tests/reactive.spec.ts
import {readonly, isReadonly, isProxy} from '../reactive'
describe("reactive", () => {
it("happy path", () => {
...
expect(isProxy(obj)).toBe(true)
})
})
// src/reactivity/tests/reactive.spec.ts
import {readonly, isReadonly, isProxy} from '../reactive'
describe("readonly", () => {
it("happy path", () => {
...
expect(isProxy(wrapped)).toBe(true)
})
})
编码
现在就根据上面的测试代码来实现isProxy
的相关逻辑,可见还是从reactive.ts
导出的一个函数,接收一个响应式对象作为参数。
export function isProxy (value) {
return isReactive(value) || isReadonly(value)
}
逻辑代码就是这么简单,因为在之前的章节中,我们已经通过函数
完成了判断是否是reactive
和是否是readonly
类型,既然isProxy
是用来判断这两种类型,那么我们直接导出之前的方法即可。
总结
这一章节没有编写新的代码,只是对之前实现的isReactive
和isReadonly
进行一个整合,通过isProxy
返回他们的结果,用来判断是否是一个通过reactive
和readonly
创建的proxy
对象。