如何使用递归属性声明对象?在nodejs中

时间:2017-10-03 08:10:15

标签: javascript object

我宣布:

var ENV       = {
    VERSION: 1,
    SERVER: 'midomain.com',
    SERVER_DEV: 'testdomain.dev',
    API_ROUTE: 'socket/',
    API: (false) ? this.SERVER + '/' + this.API_ROUTE : this.SERVER_DEV + '/' + this.API_ROUTE };

应该得到:

{ VERSION: 1,SERVER: 'midomain.com',SERVER_DEV: 'testdomain.dev',API_ROUTE: 'socket/', API: 'testdomain.dev/socket/' }

但我得到

{ VERSION: 1,SERVER: 'midomain.com',SERVER_DEV: 'testdomain.dev',API_ROUTE: 'socket/',  API: 'undefined/undefined' }

1 个答案:

答案 0 :(得分:0)

因为在这种情况下,上下文是全局的,而不是您的对象。您可以通过示例进行检查:

window.b = 666;

let a = {
 prop: this.b
}

console.log(a); // display: {prop: 666}

您可以逐个填充对象属性

let ENV       = {};
ENV.VERSION = 1;
ENV.SERVER = 'midomain.com';
ENV.API = ENV.SERVER;

或使用' new'创建功能语法

var ENV = new function() {
   this.VERSION = 1;
   this.SERVER = 'midomain.com';
   this.API = this.SERVER;
};