@@ -6,63 +6,57 @@ import { Func, getBinder, inAction, isPrimitive } from "./utils"
66const MAX_RUN_COUNT = 1000
77
88/**
9- * ========================
10- * 函数
11- * ========================
9+ * Create observable wrapper.
1210 */
13-
14- /**
15- * 获取可观察的对象
16- */
17- function observableObject < T extends object > ( obj :T = { } as any ) :T {
11+ function createObservableObject < T extends object > ( obj :T = { } as any ) :T {
1812if ( isPrimitive ( obj ) ) {
19- throw TypeError ( `${ obj } 是基本类型,dob 仅支持非基本类型 ` )
13+ throw TypeError ( `dob not support ${ obj } , because it is a basic type. ` )
2014}
2115
2216if ( globalState . proxies . has ( obj ) ) {
2317return globalState . proxies . get ( obj )
2418}
2519
26- //proxy 惰性封装
20+ //Proxy inert packaging.
2721return toObservable ( obj )
2822}
2923
3024/**
31- *将 class 改造为可观察对象
25+ *Create observable decorator.
3226 */
33- function observableObjectDecorator ( target :any ) {
27+ function createObservableObjectDecorator ( target :any ) {
3428function wrap ( ...args :any [ ] ) {
35- return observableObject ( new target ( ...args ) )
29+ return createObservableObject ( new target ( ...args ) )
3630}
3731return wrap as any
3832}
3933
4034/**
41- *生成可观察的对象
35+ *Create observable object from origin object.
4236 */
4337function toObservable < T extends object > ( obj :T ) :T {
4438if ( Object . getOwnPropertySymbols ( obj ) . indexOf ( globalState . ignoreDynamicSymbol ) > - 1 ) {
45- //如果对象忽略了动态化,直接返回
39+ //Ignore observable
4640return obj
4741}
4842
4943let dynamicObject :T
5044
5145const builtIn = builtIns . get ( obj . constructor )
5246if ( typeof builtIn === "function" || typeof builtIn === "object" ) {
53- //处理 map weakMap set weakSet
47+ //support: map weakMap set weakSet.
5448dynamicObject = builtIn ( obj , bindCurrentReaction , queueRunReactions , proxyValue )
5549} else if ( ! builtIn ) {
5650dynamicObject = new Proxy ( obj , {
5751get ( target , key , receiver ) {
5852let value = Reflect . get ( target , key , receiver )
5953
60- //如果 key 是 $raw,或者在 Action 中,直接返回原始对象
54+ //Get origin object.
6155if ( key === "$raw" ) {
6256return target
6357}
6458
65- //将子元素注册到 immutable,子元素可以找到其根节点对象,以及路径
59+ //Getter event.
6660globalState . event . emit ( "get" , { target, key, value} )
6761
6862bindCurrentReaction ( target , key )
@@ -73,10 +67,9 @@ function toObservable<T extends object>(obj: T): T {
7367} ,
7468
7569set ( target , key , value , receiver ) {
76- // 旧值
7770const oldValue = Reflect . get ( target , key , receiver )
7871
79- //如果新值是对象,优先取原始对象
72+ //If the new value is an object, the original object is preferentially taken.
8073if ( typeof value === "object" && value ) {
8174value = value . $raw || value
8275}
@@ -331,9 +324,9 @@ function runInAction(fn: () => any | Promise<any>, debugName?: string) {
331324
332325function observable < T > ( target :T = { } as any ) :T {
333326if ( typeof target === "function" ) { // 挂在 class 的 decorator
334- return observableObjectDecorator ( target )
327+ return createObservableObjectDecorator ( target )
335328} else { // 包裹变量的
336- return observableObject ( target as any ) as T
329+ return createObservableObject ( target as any ) as T
337330}
338331}
339332