didSet in Javascript:变量改变时调用函数
didSet in Javascript: calling function when variable is altered
Javascript
中的 Swift
是否有等同于 didSet
的词?基本上可以在变量更改时自动调用函数。这样做的目的是不必每次都调用一个函数,如下所示:
var x = someType()
x.behavior = newBehavior
alterBehavior(x, newBehavior)
function alterBehavior(var,behavior) { // change behavior of var }
我可以做到
var x = someType()
someType didSet { // change behavior of var }
x.behavior = newBehavior
这是一个微不足道的例子,但对于我的用例来说,这将为我节省大量时间/每次子 属性 每次更改时的函数调用。
Javascript 没有确切的等价物。
您可以使用较低级别的代理来模拟等效的东西API
const target = {
hello: "world",
didSet: (oldVal, newVal) => {
console.log('oldVal =>', oldVal, 'newVal =>', newVal)
}
}
const pseudoTarget = new Proxy(target, {
set(object, prop, val) {
const oldVal = object[prop]
object[prop] = val
if (typeof object.didSet === "function") {
object.didSet(oldVal, val)
}
}
})
现在当您设置 属性 时,didSet 函数将在出现时被调用。
pseudoTarget.hello = "new world"
VM544:4 oldVal => world newVal => new world
"new world"
对于现实世界的项目,您可能需要使用更高级别的库,例如:MobX。
Javascript
中的 Swift
是否有等同于 didSet
的词?基本上可以在变量更改时自动调用函数。这样做的目的是不必每次都调用一个函数,如下所示:
var x = someType()
x.behavior = newBehavior
alterBehavior(x, newBehavior)
function alterBehavior(var,behavior) { // change behavior of var }
我可以做到
var x = someType()
someType didSet { // change behavior of var }
x.behavior = newBehavior
这是一个微不足道的例子,但对于我的用例来说,这将为我节省大量时间/每次子 属性 每次更改时的函数调用。
Javascript 没有确切的等价物。
您可以使用较低级别的代理来模拟等效的东西API
const target = {
hello: "world",
didSet: (oldVal, newVal) => {
console.log('oldVal =>', oldVal, 'newVal =>', newVal)
}
}
const pseudoTarget = new Proxy(target, {
set(object, prop, val) {
const oldVal = object[prop]
object[prop] = val
if (typeof object.didSet === "function") {
object.didSet(oldVal, val)
}
}
})
现在当您设置 属性 时,didSet 函数将在出现时被调用。
pseudoTarget.hello = "new world"
VM544:4 oldVal => world newVal => new world
"new world"
对于现实世界的项目,您可能需要使用更高级别的库,例如:MobX。