# Vue.observable
src/core/global-api/index.js
Vue.observable = <T>(obj: T): T => {
observe(obj)
return obj
}
1
2
3
4
5
2
3
4
5
这个observe就是响应式里面observe,就是让数据变得可观察,是一种跨组件存储数据的好办法(这个数据在全局不共享,只在小范围共享)
src/core/observer/index.js
export function observe (value: any, asRootData: ?boolean): Observer | void {
if (!isObject(value) || value instanceof VNode) {
return
}
let ob: Observer | void
if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
ob = value.__ob__
} else if (
shouldObserve &&
!isServerRendering() &&
(Array.isArray(value) || isPlainObject(value)) &&
Object.isExtensible(value) &&
!value._isVue
) {
ob = new Observer(value)
}
if (asRootData && ob) {
ob.vmCount++
}
return ob
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
← Vue.use Vue.extend →