javascript - 如何引用 JavaScript 函数内的不同位置

标签 javascript oop encapsulation

我正在尝试从 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 值,我试图从相应的函数 readCriticalhsub 内部访问该值。我怎样才能做到这一点?特别是来自实例化的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/

相关文章:

javascript - 读取以逗号分隔的 Javascript 数字

javascript - Jquery:如何检测某个元素何时添加到dom?

javascript - 具有相同类的嵌套元素上的jquery click事件

struct - 创建零大小结构的多种方法有什么区别?

language-agnostic - 你能解释一下关于封装的事情吗?

assembly - 汇编语言是如何结合到程序中的?

javascript - simplejson 没有在应用引擎服务器上转义单引号

javascript - 如何在类里面调用它,例如 forEach?

c++ - 返回对对象构造函数的引用

c++ - 从多个类中检索集合的值,正确的方法是什么?