【问题标题】:How to use nested Functions in Objects如何在对象中使用嵌套函数
【发布时间】:2010-09-30 14:43:05
【问题描述】:

假设您使用以下结构:

var Args = new Object();
Args.Age = '10';
Args.Weight = '10';

Args.GetAge = function() {
    return 'I am ' + Age + ' years old';
}

Args.GetWeight = function() {
    return 'I weigh ' + Weight + ' pounds';
}

效果很好。但是是否可以使用泛型,这样您就不必为每个变量创建一个函数?例如,如下所示:

Args.GetValue = function(i) {
    return this.i;
}

这似乎不起作用,但我什至不知道这是否可能。有人知道这个谜语的答案吗?

【问题讨论】:

    标签: javascript object


    【解决方案1】:

    您可以通过 [] 符号访问属性:

    alert(Args["Age"]);
    

    而且,如下所述,您也可以通过 .Age 或 .Weight 读取值:

    alert(Args.Age);
    

    这似乎很明显,所以我以为你在寻找其他东西。

    顺便说一句,您可以将对象创建简化为:

    var args = { Age : '10', Weight : '10' };
    

    【讨论】:

    • 我正在使用一个对象来保存我的脚本启动参数,并且需要将它们按摩成正确的格式。我有一个检索参数的函数,但我想将函数嵌套到对象中。
    • 为 Args 声明一个函数而不是一个对象会更好吗?这样我就可以简单地使用语法 var myArgs = new Args()。当然 getValue 函数会变成 this.getValue = function(name) { return this[name]; }
    • 这就是微软 AJAX 的工作原理;每个 setter 和 getter 都有函数。它们以 _set 和 _get 开头。在原型中声明了一个类级变量,getter 和 setter 返回并设置该变量。
    【解决方案2】:
    var Args = {};
    Args.Age = '10';
    Args.Weight = '10';
    
    alert(Args.Age);
    alert(Args.Weight);
    

    它们都可用于读/写,您不需要 setter/getter。

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多