[英]How can I pass a JS object literal name value pair to another function
給定一個JS文字對象,如:
var foo = {
_stuff : {
a:10,
b:20,
c:30,
state
}
}
和文字功能
addAB: function() {
add(foo._stuff[a], foo._stuff[b]);
}
addAC: function() {
add(foo._stuff[a], foo._stuff[c]);
}
add: function(bar, baz) {
foo._stuff[bar] += foo._stuff[baz];
state(foo._stuff[bar]);
}
state: function(value) {
foo.state[value] = .... something complex ....
}
如何一次性獲得以下內容?
add(AB); foo._stuff[a] should be 30, foo.state[foo._stuff[a]] is something new
add(AC); foo._stuff[a] should be 40, foo.state[foo._stuff[a]] is something new
因為add()將嘗試查找foo._stuff [10],它顯然不會做我想要的。
是的我知道addAB()和addAC()存在冗余,但這是我無法控制的。
傳遞索引而不是值,如下所示:
addAB: function() {
add('a', 'b');
}
addAC: function() {
add('a', 'c');
}
add: function(bar, baz) {
if (arguments.length === 1) {
this['add' + arguments[0]];
} else {
foo._stuff[bar] += foo._stuff[baz];
state(foo._stuff[bar]);
}
}
// assuming you are calling
var AB = 'AB', AC = 'AC';
add(AB);
add(AC);
否則,我不知道你在問什么。
我不確定我是否完全遵循你想要完成的任務,但你的對象文字不是有效的語法。 我不明白為什么你想要_stuff
屬性。 並且,您需要將state
屬性初始化為某個值,即使它未定義。 但是,由於您希望根據某個屬性名稱在state
屬性中存儲值,因此應將state
初始化為對象。
var foo = {
a:10,
b:20,
c:30,
state: {}
}
你的javascript:
addAB: function() {
add('a', 'b');
}
addAC: function() {
add('a', 'c');
}
add: function(propName0, propName1) {
foo[propName0] += foo[propName1];
state(propName0);
}
state: function(propName) {
// state is initialized to an object, so can store properties in there now
foo.state[propName] = .... something complex ....
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.