无法访问js文件中的命名空间变量

时间:2015-01-13 05:34:00

标签: javascript

a.js

// @global-constants
var App = {

  constant: function() {
    constant.prototype.CONST1 = 'abc';
  }

};

module.exports = App;

无法使用b.js说出App.constant.CONST1,它说未定义为什么?

2 个答案:

答案 0 :(得分:0)

您的代码存在两个问题:

1。)App.constant将返回一个类(技术上是一个函数),但你想要的是它的对象,可以使用new关键字创建,因此它变为,(new App.constant).CONST1

2。)constant.prototype.CONST1不起作用,因为constant不是您的匿名函数的名称,因此我给它命名为foo,它变为foo.prototype.CONST1

修改后的代码:

var App = {
    constant: function foo() {
    foo.prototype.CONST1 = 'abc';
  }

};

console.log((new App.constant).CONST1);

小提琴demo

答案 1 :(得分:0)

如果您只想创建一组"常数",您只需要一个对象:

// @global-constants
var App = {

  constant: {
      CONST1: 'abc';
  }

};

要了解有关原型如何工作的更多信息(以便您知道何时使用它们,何时不知道),我建议您阅读this article on MDN