中文 | English
smart-observe 来自 Vue.js,是一个小巧、高效,用于监测 javascript 对象、数组、类 变化的库
npm install --save smart-observe
或
bower install --save smart-observe
const target = {a: 1}
observe(target, 'a', function (newValue, oldValue) {
console.log(newValue, oldValue)
})
target.a = 3
// 3 1
const target = {a: 1}
observe.compute(target, 'b', function () {
return this.a * 2
})
console.log(target.b)
// 2
target.a = 3
console.log(target.b)
// 6
const options = {
data: {
PI: Math.PI,
radius: 1,
},
computed: {
'area': function () {
return this.PI * this.square(this.radius) // πr²
},
},
watchers: {
'area': function (newValue, oldValue) {
console.log(`area: ${newValue}`)
},
},
methods: {
square (num) {
return num * num
},
},
}
const target = observe.react(options)
target.radius = 3
// area: 28.274333882308138
名称 | 类型 | 值 | 说明 |
---|---|---|---|
observe.deep |
boolean |
默认为 false |
如果为 true ,observe.watch(target, expression, callback) 将会对 target 深度监测 |
observe.sync |
boolean |
默认为 false |
如果为 true ,observe.watch(target, expression, callback) 监测到属性变化时,立即调用回调函数 |
observe.default |
function |
只能为 observe.react ,observe.watch 或 observe.compute , 默认为 observe.watch |
设置 observe(...) 实际调用的方法,写起来简洁一些 |
observe(...)
- 为方法
observe.default
的语法糖,observe.default
参见属性
observe.watch(target, expression, callback)
target
: 任意对象expression
:string
或function
callback
:function
- 返回
Watcher
,调用watcher.teardown()
可以取消监测
observe.compute(target, name, accessor, cache)
target
: 任意对象name
:string
accessor
:function
: 会作为getter
,等同传入 {get: accessor}Object
: 可以包含:(其中,至少包含get
或set
)get
:function
set
:function
cache
:boolean
,可选,默认为true
,如果设为false
,每次读取计算属性都要重新计算
cache
:boolean
,可选,默认为true
,仅当accessor
为function
时有效。
observe.react(options, target)
options
:Object
,要配置的参数集合,可以包含:data
: 要附加的字段computed
: 要附加的计算属性watchers
: 要监测的属性和计算属性methods
: 要附加的方法,这些方法将会自动绑定target
target
: 任意对象,可选,默认为空对象,options
的参数将附加到此对象上- 返回
target