';这';内部嵌套对象(JavaScript)

';这';内部嵌套对象(JavaScript),javascript,javascript-objects,Javascript,Javascript Objects,我希望有一些像这样的对象结构(我知道这是不可能的) 编辑:我还想将对象导出为模块 所以我做了一些经验 体验A const AUTH\u BASE='AUTH' 常数AUTH_A={ 登录:{ 输入:`${AUTH_BASE}/login`, 密码:`${AUTH_BASE}/login/password`, } } console.log('enter->',AUTH_A.login.enter) console.log('recover->',AUTH_A.login.password)您可

我希望有一些像这样的对象结构(我知道这是不可能的)

编辑:我还想将对象导出为模块

所以我做了一些经验

体验A

const AUTH\u BASE='AUTH'
常数AUTH_A={
登录:{
输入:`${AUTH_BASE}/login`,
密码:`${AUTH_BASE}/login/password`,
}
}
console.log('enter->',AUTH_A.login.enter)

console.log('recover->',AUTH_A.login.password)
您可以使用如下静态类:

class Auth {
  static base = 'auth'
  static login = {
    enter: `${Auth.base}/login`
  }
}
或者使用getter自引用对象

const AUTH = {
  base: 'auth',
  get login() {
    return {
      enter: `${AUTH.base}/login`,
      password: `${AUTH.base}/login/password`
    }
  }
}
因此,您可以像访问任何其他道具一样访问您的属性:

console.log(AUTH.login.enter)
console.log(AUTH.login.password)

在评论中,我谈论的是:

function authFactory(base){
    this.base = base;
    this.login = {
        enter: `${base}/login`,
        password: `${base}/login/password`
    }
}

const AUTH_E = new authFactory("auth");
console.log('enter E ->', AUTH_E.login.enter);
console.log('recover E ->', AUTH_E.login.password);

实现你想要的最好方法就是这样

const AUTH_B={
base:'auth',
登录(){
返回`${this.base}/login`
},
密码(){
返回`${this.base}/login/password`
},
}
对象冻结(AUTH_B);
AUTH_B.base=“其他东西”;

console.log(AUTH_B.login())
您还可以使用一个工厂函数,它将获取AUTH base并返回您想要的对象。这是主观的,对我来说,选项a看起来最好。体验B似乎很好。因为它就像一个单独的对象,您也可以将其导出为一个模块。
function authFactory(base){
    this.base = base;
    this.login = {
        enter: `${base}/login`,
        password: `${base}/login/password`
    }
}

const AUTH_E = new authFactory("auth");
console.log('enter E ->', AUTH_E.login.enter);
console.log('recover E ->', AUTH_E.login.password);