@superjs/observe
Version:
use Proxy to observe changes for nested object
24 lines (21 loc) • 532 B
JavaScript
const s = require('./symbols')
const utils = require('./utils')
module.exports = Observable
const ObservableHandler = require('./ObservableHandler')
function Observable (target) {
let type
if (utils.isArray(target)) {
type = 'array'
} else if (utils.isPlainObject(target)) {
type = 'object'
} else {
// noinspection all
return null
}
// 已经是一个Observable
if (target[s.handler]) {
return target
}
let handler = new ObservableHandler(target, type)
return new Proxy(target, handler)
}