如何修改对匿名函数的所有引用

问题描述 投票:2回答:1

是否可以修改对匿名函数的所有引用,以使其他对象的调用反映所做的更改?

[下面是obj1.name和obj2.name都指向同一个函数的情况的示例,但是由于在创建obj2.name = obj1.name时该函数是通过值传递的,因此obj1.name中的更改不会影响obj2.name。

在此示例中,我想修改该函数,以便它为所有对象返回“已编辑”。

let obj1 = {
    name: function() { return 'original'; }
}
let obj2 = {
    name: obj1.name
}
// obj1.name() >> 'original'
// obj2.name() >> 'original'

obj1.name = function() { return 'edited'; }
// obj1.name() >> 'edited'
// obj2.name() >> 'original'
javascript prototype
1个回答
1
投票

尝试一下。这样obj2.name也是一个函数。

如果您希望obj2.name为属性,则在obj1.name更改后,您将需要监视它并更新obj2.name。因此使用一种方法可能更容易。

let obj1 = {
    name: function() { return 'original'; }
}
let obj2 = {
    name: function() { return obj1.name() }
}
© www.soinside.com 2019 - 2024. All rights reserved.