问答详情
源自:3-1 可观察的数据

在mobx5中Array.isArray(arr)的值为true,是怎么做到的呢?

在mobx5中Array.isArray(arr)的值为true,是怎么做到的呢?

提问者:慕侠4357865 2018-08-24 16:10

个回答

  • vone
    2018-11-19 22:44:48

    https://github.com/mobxjs/mobx/blob/master/src/types/observablearray.ts#L506

    export function isObservableArray(thing): thing is IObservableArray<any> {    
    return isObject(thing) && isObservableArrayAdministration(thing[$mobx])    
    }
    const isObservableArrayAdministration = createInstanceofPredicate(    
    "ObservableArrayAdministration",    
    ObservableArrayAdministration    
    )
    export function createInstanceofPredicate<T>(    
    name: string,    
    clazz: new (...args: any[]) => T    
    ): (x: any) => x is T {    
    const propName = "isMobX" + name    
    clazz.prototype[propName] = true    
    return function(x) {    
    return isObject(x) && x[propName] === true    
    } as any    
    }