gpt4 book ai didi

javascript - 在 forEach() 中创建方法;

转载 作者:行者123 更新时间:2023-11-29 16:47:53 25 4
gpt4 key购买 nike

我正在尝试为变量 res 创建方法。预期结果将是 res.add.wood('100')。这将使木材数量增加 100。 res.get.wheat() 会得到小麦的数量。

资源是 ['wood', 'wheat', 'gold', 'meat'], Action 是 ['get', 'set', 'add', 'sub']。我不希望将它们全部定义如下:

var resources = ['wood', 'wheat', 'gold', 'meat'];
var actions = ['get', 'set', 'add', 'sub'];

var res;

function res.get.wood() {
//
}

function res.set.wood() {
//
}

// 6 more to define.....

我正在寻找一种让它更快的方法。

以下代码使我能够使用 res.get()res.set()res.add()res.sub():

var res = ['get', 'set', 'add', 'sub'];

res.forEach(function(arrayElement) {

res[arrayElement] = function() {
alert(arrayElement)
}

});

我需要另一个循环,我尝试了以下但它不起作用:

res.forEach(function(arrayElement) {

['get', 'set', 'add', 'sub'].forEach(function(arrayInnerElement) {

res[arrayElement][arrayInnerElement] = function() {
alert(arrayInnerElement);
}

});
});

最佳答案

我建议这样:

var resources = { 'wood': 50, 'wheat': 100, 'gold': 0, 'meat': 50 };

var resourceManager = (function(resources) {

function Resource(amount) {
this.amount = amount || 0;
}
Resource.prototype.get = function() {
return this.amount;
};
Resource.prototype.set = function(amount) {
this.amount = amount;
};
Resource.prototype.add = function(amount) {
this.amount += amount;
};
Resource.prototype.sub = function(amount) {
this.amount -= amount;
};

var o = {};
Object.keys(resources).forEach(function(resource) {
o[resource] = new Resource(resources[resource]);
});
return o;

}(resources));


var res = resourceManager;
console.log(res.wood.get()); // 50
res.wood.set(10);
console.log(res.wood.get()); // 10
res.wood.add(5);
res.wood.sub(2);
console.log(res.wood.get()); // 13

关于javascript - 在 forEach() 中创建方法;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38931992/

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