簡體   English   中英

如何將JS對象文字名稱值對傳遞給另一個函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM