Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 1x 1x 1x 1x 1x 1x 54x 28x 54x 7x 54x 1x 20x 20x 20x 20x 70x 70x 20x 50x 50x 50x | import { hasOwn } from '../util/hasOwn' import { isReserved } from '../util/isReserved' import { noop } from '../util/noop' const sharedPropertyDefinition = { enumerable: true, configurable: true, get: noop, set: noop, } export function proxy (target, sourceKey, key) { sharedPropertyDefinition.get = function proxyGetter () { return this._renderProxy[sourceKey][key] } sharedPropertyDefinition.set = function proxySetter (val) { this._renderProxy.setData({ [key]: val, }) } Object.defineProperty(target, key, sharedPropertyDefinition) } export function initProxy (vm) { const props = vm.$options.props const keys = Object.keys(vm._renderProxy.data) let i = keys.length while (i--) { const key = keys[i] if (props && hasOwn(props, key)) { continue } else if (!isReserved(key)) { // 在 extend 时,静态 props & computed 已经在组件的原型上代理 // 所以只需E要在实例上代理其他的 props if (!(key in vm)) { proxy(vm, 'data', key) }E } } } |