Observer Class — vue Architecture
Architecture documentation for the Observer class in index.ts from the vue codebase.
Entity Profile
Dependency Diagram
graph TD 2c74d940_5549_d682_16cc_0c643fff7d8d["Observer"] 012c0986_6b9d_ad59_8fba_57884312dd3b["index.ts"] 2c74d940_5549_d682_16cc_0c643fff7d8d -->|defined in| 012c0986_6b9d_ad59_8fba_57884312dd3b 90ef1d3a_2785_5dda_2141_19e108797c9d["constructor()"] 2c74d940_5549_d682_16cc_0c643fff7d8d -->|method| 90ef1d3a_2785_5dda_2141_19e108797c9d 17657a1e_b0a2_0135_b657_5fa134adbfec["observeArray()"] 2c74d940_5549_d682_16cc_0c643fff7d8d -->|method| 17657a1e_b0a2_0135_b657_5fa134adbfec
Relationship Graph
Source Code
src/core/observer/index.ts lines 48–95
export class Observer {
dep: Dep
vmCount: number // number of vms that have this object as root $data
constructor(public value: any, public shallow = false, public mock = false) {
// this.value = value
this.dep = mock ? mockDep : new Dep()
this.vmCount = 0
def(value, '__ob__', this)
if (isArray(value)) {
if (!mock) {
if (hasProto) {
/* eslint-disable no-proto */
;(value as any).__proto__ = arrayMethods
/* eslint-enable no-proto */
} else {
for (let i = 0, l = arrayKeys.length; i < l; i++) {
const key = arrayKeys[i]
def(value, key, arrayMethods[key])
}
}
}
if (!shallow) {
this.observeArray(value)
}
} else {
/**
* Walk through all properties and convert them into
* getter/setters. This method should only be called when
* value type is Object.
*/
const keys = Object.keys(value)
for (let i = 0; i < keys.length; i++) {
const key = keys[i]
defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock)
}
}
}
/**
* Observe a list of Array items.
*/
observeArray(value: any[]) {
for (let i = 0, l = value.length; i < l; i++) {
observe(value[i], false, this.mock)
}
}
}
Domain
Defined In
Source
Frequently Asked Questions
What is the Observer class?
Observer is a class in the vue codebase, defined in src/core/observer/index.ts.
Where is Observer defined?
Observer is defined in src/core/observer/index.ts at line 48.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free