ob.js
v1.0.0
Published
ob.js comes from vue.js and is used to observe/watch Object/Array/Class
Downloads
39
Maintainers
Readme
English | 中文
ob.js
ob.js comes from Vue.js. It's a small, efficient library for observing changes to javascript Object, Array and Class.
Installation
npm install --save ob.js
or
bower install --save ob.js
Usage
To watch expression. ob.watch(target, expression, callback)
or ob(target, expression, callback)
const target = {a: 1}
ob(target, 'a', function (newValue, oldValue) {
console.log(newValue, oldValue)
})
target.a = 3
// 3 1
To add computed property. ob.compute(target, name, getter)
const target = {a: 1}
ob.compute(target, 'b', function () {
return this.a * 2
})
console.log(target.b)
// 2
target.a = 3
console.log(target.b)
// 6
To watch expressions and computed properties. ob.react(options)
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 = ob.react(options)
target.radius = 3
// area: 28.274333882308138
API
properties
| name | type | value | detail |
| --- | --- | --- | --- |
| ob.deep
| Boolean
| The default is false
| If true
, ob.watch(target, expression, callback)
will observe target
deeply |
| ob.sync
| Boolean
| The default is false
| If true
, ob.watch(target, expression, callback)
will invoke callback immediately when a property change is detected |
| ob.default
| Function
| Could only be one of ob.react
, ob.watch
and ob.compute
. The default is ob.watch
| Set actual method to ob.default
for ob(...)
|
methods
ob(...)
- It's syntactic sugar of
ob.default
. See 'properties' for details
ob.watch(target, expression, callback)
target
: Any objectexpression
:String
orFunction
callback
:Function
- Returns
Watcher
. And callingwatcher.teardown()
could unwatch expression
ob.compute(target, name, accessor, cache)
target
: Any objectname
:String
accessor
:Function
: It will be theget
of accessorObject
: Contains: (at leastget
orset
)get
:Function
set
:Function
cache
:Boolean
. Optional. The default istrue
. Iffalse
, theget
will be evaluated whenever reading computed properties
cache
:Boolean
. Same asaccessor.cache
ob.react(options, target)
options
:Object
. Contains:data
: It's the properties to addcomputed
: It's the computed properties to addwatchers
: It's the watchers to watch properties or computed propertiesmethods
: The methods to add. And these will bind totarget
target
: Any object. Optional. The default is empty object. It will be attached with the fields ofoptions
- returns
target