gpt4 book ai didi

javascript - 最小化 JS getter/setter 样板

转载 作者:行者123 更新时间:2023-11-29 19:23:04 26 4
gpt4 key购买 nike

我正在使用一个对象创建面向闭包的对象,该对象具有大量围绕 getter/setter 方法的样板。有没有什么方法可以将这些属性声明为 getter/setter 而无需重复这么多?

目前我有:

var test = function(){
var width = 10;
var height = 10;
return {
width: {get: function(){return width;}, set: function(_){width=_;}},
height: {get: function(){return height;}, set: function(_){height=_;}},
}
}

但我想要更像:

var test = function(){
var width = 10;
var height = 10;
return {
width: getset(width)
height: getset(height),
}
}

我想写一个像这样的函数:

var test = function(){

var getset = function(val){
return {
get: function(){
console.log('getting');
return val
},
set: function(_){
console.log('besetted');
param=_
},
}
}
var width = 10;
var height = 10;

return {
width: getset(width),
height: getset(height),
}
}

但这行不通;变量没有被正确覆盖。什么是最好的方法?有这方面的语言功能吗?

最佳答案

给你:

var test = function(){

var getset = function(value){
var val = value;
return {
get: function(){
console.log('getting');
return val
},
set: function(_){
console.log('besetted');
val=_
},
}
}
var width = 10;
var height = 10;

return {
width: getset(width),
height: getset(height),
}
}

关于闭包要记住的一件事 - 您需要一个在内部函数内部和外部的整个范围内都可以访问的变量。

关于javascript - 最小化 JS getter/setter 样板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32212920/

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