javascript - 在对象声明完成之前调用成员方法

标签 javascript namespaces

<分区>

前段时间我听说将代码包装在一个大对象中作为命名空间是一种很好的做法,以减少全局命名空间的困惑并促进库导出,所以我尝试了这个。

var wrapper = {
    foo: function(){
        return 42;
    },
    bar: this.foo()
};

它失败了,声称“foo 未定义”。 在完成对象声明之前调用方法可能很糟糕,所以我移动了 bar,它起作用了。

var wrapper = {
    foo: function(){
        return 42;
    },
};
wrapper.bar = wrapper.foo();

我觉得这可能会变得有点丑陋,尤其是对于嵌套的命名空间等,那么是否有任何变通方法不会让一次看到包装器的所有成员变得困难?

最佳答案

问题是 this 将等于全局上下文。您需要像这样访问该功能:

var wrapper = {
    foo: function(){
        return 42;
    },
    bar: null,
    init : function() {
       // all initialization code goes here
       wrapper.bar = wrapper.foo();
    }
};

wrapper.init();

这种方法非常适合将代码组织成逻辑 block ,这样您和 future 的开发人员就可以轻松地在 JavaScript 中找到您要查找的内容。

关于javascript - 在对象声明完成之前调用成员方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436572/

相关文章:

javascript - 页面级自定义变量未显示在 Google Analytics 中

.net - 命名空间是否会传播到 XElement 对象中的子级?

java - 如何在使用 javax.xml.crypto.dsig.* 签署 XML 文件时添加命名空间?

javascript - javascript混淆中的 promise

javascript - 提示框消失后无法再次弹出

javascript - 如何获取表格内容并将其作为多维数组放入变量中

Javascript 在另一个函数执行后调用函数

linux - 如何监控其他挂载命名空间?

c# - 在 web.config 文件中添加命名空间有什么好处?

namespaces - Clojure 命名空间管理 - 有没有办法保存和恢复 clojure repl 命名空间、导入等的状态?