【问题标题】:JavaScript: Get the value of a dinamicly generated objectJavaScript:获取动态生成的对象的值
【发布时间】:2014-06-19 22:56:08
【问题描述】:

我知道我可以通过组合名称来访问用户定义变量的值

window["myvariable"+1234]

我不知道如何访问内部属性的值。我想要类似以下代码的东西,但这有效:

//Suppose there is an object with user-generated property names like myCars.Ford.Focus.mileage and I need a function that reports the value of a certain property only when the content is not an empty string. So we create a function like
function squealProperty(maker,model,UDProp){
    if(window["myCars."+maker+"."+model+"."+UDProp+".length"] > 0){
        alert("User defined property inspector ("+UDProp+")="+window["myCars."+maker+"."+model+"."+UDProp]);
    };
};

在这样的时刻,我通常会在“书”[1] 中找到我祈祷的答案,但这次没有运气。所以我在这里问。 [1] “本书”是指“JavaScript:权威指南”,第 5 版。大卫·弗拉纳根

【问题讨论】:

  • MyCars[maker][model][UDProp].length

标签: javascript object window


【解决方案1】:

当您使用 [] 访问属性时,您不能将其作为单个字符串访问。所以你必须分解它们。此外,如果您尝试一次检查所有内容,您的代码将会中断,因此您必须在每次检查时只检查一个“内部”属性。

function squealProperty(maker,model,UDProp){
    if(window["myCars"] && window["myCars"][maker] && window["myCars"][maker][model] && window["myCars"][maker][model][UDProp] && window["myCars"][maker][model][UDProp].length > 0){
        alert("User defined property inspector ("+UDProp+")="+window["myCars"][maker][model][UDProp]);
    };
};

【讨论】:

  • 啊……语法问题!托比!你用贝宝吗?请允许我请你喝咖啡!
【解决方案2】:

部分访问它:

function squealProperty(maker,model,UDProp){
    var obj = window.myCars;
    if (obj && 
        (obj = obj[maker]) &&
        (obj = obj[model]) &&
        (obj = obj[UDProp]) ) {

        /* do something with obj */

    }  
}

var myCars = {maker: {model: {UDProp:[0,1,2,3]}}};
squealProperty('maker','model','UDProp'); // 4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-20
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多