javascript如何从对象变量返回一个数字

时间:2014-08-20 20:57:06

标签: javascript jquery

所以,我在该对象中有一个名为con的大对象,我有很多变量,编号类似excel表,b19, b20, b21, etc.

我正在尝试从每个值返回一个值,但是当我执行控制台日志时,它会记录整个函数,而不仅仅是返回。

以下是对象的设置方式:

var con = {
    b13: function(){
        return 12600.535*Math.sqrt((con.b14+459.4)/459.4)
    },
    b14: function(){
        return 20;
    }
}

$(document).ready(function(){
    console.log(con.b13);
});

将此输出到控制台:

function(){
    return 12600.535*Math.sqrt((con.b14+459.4)/459.4)
}

那么我该如何格式化它以便输出等式中的实际数字呢?

5 个答案:

答案 0 :(得分:2)

您需要使用getter函数制作b13b14 属性

var con = {};

Object.defineProperty(con, "b13", {
    get: function() {
        return 12600.535*Math.sqrt((con.b14+459.4)/459.4);
    }
});

Object.defineProperty(con, "b14", {
    get: function() { return 20; }
});

这将导致con.b13con.b14调用给定的函数,返回函数返回的内容。

答案 1 :(得分:2)

试试console.log(con.b13());。您正在记录函数定义而不执行它。

答案 2 :(得分:1)

您没有将属性定义为函数...

var con = {
  b13: 239487,
  b12: 923748
};

编辑:如果某些属性需要是函数,则必须调用它们,例如: con.b14(),而不是con.b14作为财产

答案 3 :(得分:0)

你可以简单地使用es5 getters / setters。

var con = {
    get b13() {
        return 12600.535*Math.sqrt((con.b14+459.4)/459.4);
    },
    get b14() {
        return 20;
    }
};

答案 4 :(得分:0)

问题是您的对象的属性为functions,但您尝试将它们称为values

例如,如果要将con.b13的值正确记录到控制台,则需要将命令更改为:

console.log(con.b13());

这样做是为了让con.b13 返回而不是

如果您不想在每个引用旁边添加()的麻烦,可以修改对象并定义getters,如下所示:

var con = {
    get b13() {
        return 12600.535 * Math.sqrt((con.b14 + 459.4) / 459.4)
    },

    get b14() {
        return 20;
    }
}

如果您定义这样的对象,原始命令console.log(con.b13)将按预期工作。