我有一个javascript对象,其结构如下:
var object = {
item1: {
name: 'item1',
details: {
name: 'detail1',
warn_lvl: 1
},
check: function(res) {
console.log('Warn lvl of item1 = '+//access var?)
}
}
}
在我console.log()
函数的check()
中,我想打印item1的warn_lvl
,但我无法弄清楚如何访问它。
我用this
尝试了几件事,但没有任何效果。
访问此var的正确方法是什么?
修改
为了更准确(对不起,我的错误),我从另一个Javascript文件调用check函数,就像这样(只有相关部分):
var fetchMetrics = function (config, metrics) {
Object.keys(metrics).forEach(function(section) {
var metric = metrics[section];
doRequests(metric, section);
};
var doRequests = function(metric, section) {
$.ajax({
dataType: "json",
url: metric.url,
data: metric.params,
var result;
if (!query_result.length) {
result = state_retriever.RESULT_UNKNOWN
} else {
result = metric.check(query_result);
}
};
答案 0 :(得分:2)
如果您通过check
致电object.item1.check("res arg here")
,那么您可以使用this.details.warn_lvl
:
var object = {
item1: {
name: 'item1',
details: {
name: 'detail1',
warn_lvl: 1
},
check: function(res) {
console.log('Warn lvl of item1 = ' + this.details.warn_lvl)
}
}
};
object.item1.check();

但是您已经说过以不同的方式打电话给check
。无论您拨打object.item1.details.warn_lvl
的方式如何,都可以通过check
可靠地访问它:
var object = {
item1: {
name: 'item1',
details: {
name: 'detail1',
warn_lvl: 1
},
check: function(res) {
console.log('Warn lvl of item1 = ' + object.item1.details.warn_lvl);
}
}
};
var c = object.item1.check;
c();