|Vue.js源码全方位深入解析,快人一步进名企-完结( 六 )


export default <{p>created () <{p>console.log('msg' in this)


下面我们来看一下 has 函数的实现:
const PublicInstanceProxyHandlers = <{p>
has
({ _: { data setupState accessCache ctx type appContextkey) <{p>
// 依次判断
return (accessCache[key
!== undefined ||
(data !== EMPTY_OBJ && hasOwn(data key)) ||
(setupState !== EMPTY_OBJ && hasOwn(setupState key)) ||
(type.props && hasOwn(normalizePropsOptions(type.props)[0
key)) ||
hasOwn(ctx key) ||
hasOwn(publicPropertiesMap key) ||
hasOwn(appContext.config.globalProperties key))


这个函数的实现很简单 , 依次判断 key 是否存在于 accessCache、data、setupState、props 、用户数据、公开属性以及全局属性中 , 然后返回结果 。
三、总结
至此 , 我们就搞清楚了创建上下文代理的过程 , 让我们回到 setupStatefulComponent 函数中 , 接下来分析第二个流程——判断处理 setup 函数 。