我正在尝试从 JavaScript 中的其他函数中访问设置和值/函数,并且相信我可能缺少一个简单的规则。这是一个非常简化的代码示例:
function h(){
// example settings I want to declare for h()
this.settings = {
critical: 400,
readCritical: function(){
return this.settings.critical; // /!\ but this does not work
}
}
this.hsub = function(){
return this.settings.critical; // /!\ this does not work either
}
}
var x = new h();
console.log(x.settings.critical); // This works fine
console.log(x.settings.readCritical()); // I can *call* this fine, but it can't read outside itself
console.log(x.hsub()); // I can also call this but same problem
console.log(h.settings); // `undefined`; I understand I can't see directly into the function
您可以看到 this.settings.ritic
值,我试图从相应的函数 readCritical
和 hsub
内部访问该值。我怎样才能做到这一点?特别是来自实例化的x
。
也是一个相关的次要问题,我更愿意声明 var settings = {}
而不是 this.settings
。这是可能的还是更好的?
最佳答案
您需要做的唯一更改是从 readCritical
函数中删除 .settings
。
hsub
按原样工作。不确定为什么您认为存在问题
function h(){
this.settings = {
critical: 400,
readCritical: function(){
return this.critical; // reference `critical` directly
}
}
this.hsub = function(){
return this.settings.critical; // this works just fine
}
}
var x = new h();
console.log(x.settings.critical); // 400
console.log(x.settings.readCritical()); // 400
console.log(x.hsub()); // 400
// This is expected to be `undefined`
console.log(h.settings);
关于javascript - 如何引用 JavaScript 函数内的不同位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45898625/