gpt4 book ai didi

javascript - Getter/Setter 作为函数

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:39 26 4
gpt4 key购买 nike

是否可以将属性 getter/setter 创建为函数?

标准的 getter/setter 工作方式如下:

class Test {
something: any;

get prop() {
return something;
}
set prop(value) {
something = value;
}
}

let instance = new Test();
instance.prop = 'Foo';
console.log(instance.prop); // = Foo

我需要以下内容:

let instance = new Test();
instance.prop('Bar') = 'Foo'; // access setter as a function of prop
console.log(instance.prop('Bar')); // = Foo

是的,我知道这是非正统的用法,是的,我知道我可以以不同的方式实现此功能。我只是感兴趣这在 JS/TS/ES6 中是否可行。

更新

这是我得到的最接近的:

class Test {
something: any;

prop(area /* my custom symbol type */) {
const obj: any = {};
Object.defineProperty(obj, 'value', {
// get child object of my complex object
get: () => this.something[area];
// replace part of my complex object
set: (value) => {
this.something = {...this.something, [area]: value}
}
});
}
}

let instance = new Test();
instance.prop('Bar').value = 'Foo';
console.log(instance.prop('Bar').value); // = Foo

简而言之,如果可能的话,我想去掉 value 后缀。

最佳答案

正如@deceze 在第一条评论中提到的,不可能分配给函数调用,因此更新中的解决方案是最好的。

关于javascript - Getter/Setter 作为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46490854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com