无法使用Object键名定义子变量

时间:2014-01-02 03:31:54

标签: javascript object

我正在尝试创建一个对象/数组键,然后为该新键定义一个子对象。

var myObject = {};
var newKey = function(key, value, otherval) {
    myObject[key] = value;
    myObject[key].subval = otherval;
};

newKey('google', 'wiki', 'yahoo');

它会创建myObject.google罚款,并为其提供值'wiki',但它根本不会创建myObject.google.subval。如何使用ONE功能执行此操作?

3 个答案:

答案 0 :(得分:1)

myObject.google已经等于“wiki”,这是一个字符串。

您可以执行类似(jsfiddle updated)的操作:

var myObject = {};
var newKey = function(key, value, otherval) {
    myObject[key] = {'value':value, 'subval':otherval}
};

newKey('google', 'wiki', 'yahoo');

console.log(myObject);

答案 1 :(得分:0)

如果要为其分配子项,则myObject.key不能是字符串。它必须是一个对象。所以你会写:

var myObject = {};
var newKey = function(key, value, subval, otherval) {
    myObject[key] = {'value' : value};
    myObject[key][subval] = {'value': otherval}; //or myObject[key][subval] = otherval; if your subval wouldn't be having any sub-subvals later on
};

newKey('googleKey', 'google', 'yahooKey', 'yahoo');

答案 2 :(得分:0)

首先,你问的要求错误的结构,这就是你所要求的。

您的结构将从已发布的功能

中进行转换
    var myObject = {

                   google: 'wiki'

                   };

console.log(myObject.google) OUTPUTS wiki

你在问什么:

var myObject = {

               google : {

                         subval : 'yahoo'
                        }

    };

现在 console.log(myObject.google.subval) OUTPUTS yahoo

工作Jsfiddle Demo

为什么你的Q /结构错了?

你在问什么, 分配

google:wiki

并分配

google:{

subval:'yahoo'

<强>}

从上述两个方面来看,你应该将谷歌分配给维基或谷歌转到子对象 你的要求要求两者都与基本逻辑相矛盾,因而不可能。