所以,我在该对象中有一个名为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)
}
那么我该如何格式化它以便输出等式中的实际数字呢?
答案 0 :(得分:2)
您需要使用getter函数制作b13
和b14
属性:
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.b13
和con.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)
将按预期工作。