Node.js Can';在ES6模块中使用getter访问对象文字属性

Node.js Can';在ES6模块中使用getter访问对象文字属性,node.js,ecmascript-6,getter,ecmascript-5,Node.js,Ecmascript 6,Getter,Ecmascript 5,当我发现时,我正在寻找一种自引用对象以访问其属性的方法(请参阅) 我正在使用NPM模块,无法访问canvas属性 config.js layouts.js 错误 问题: 为什么不工作?您有嵌套的对象文本。内部layout对象文本不知道它有一个父对象,因此这个在layout的getter中指的是config.layout 您可以使用对象速记语法来改进这一点 import path from "path"; import layouts from "./layouts"; const canvas

当我发现时,我正在寻找一种自引用对象以访问其属性的方法(请参阅)

我正在使用NPM模块,无法访问
canvas
属性

config.js layouts.js 错误 问题:
为什么不工作?

您有嵌套的对象文本。内部
layout
对象文本不知道它有一个父对象,因此
这个
layout
的getter中指的是
config.layout

您可以使用对象速记语法来改进这一点

import path from "path";
import layouts from "./layouts";

const canvas = {
  canvas: { width: 80, height: 80 }
}

const layout = {
  get base() {
    return layouts.base.bottom(canvas);
  },
  get annotation() {
    return layouts.annotation.top(canvas);
  }
}

export default {
  canvas, layout
};

您有嵌套的对象文字。内部
layout
对象文本不知道它有一个父对象,因此
这个
layout
的getter中指的是
config.layout

您可以使用对象速记语法来改进这一点

import path from "path";
import layouts from "./layouts";

const canvas = {
  canvas: { width: 80, height: 80 }
}

const layout = {
  get base() {
    return layouts.base.bottom(canvas);
  },
  get annotation() {
    return layouts.annotation.top(canvas);
  }
}

export default {
  canvas, layout
};

正如@Chris所解释的,
this
不是引用我的顶级对象
config
,而是父对象
布局

向上移动getter可以解决这个问题

const config = {
  get layout() {
    return {
      base: layout.base.bottom(this.canvas),
      annotation: layout.annotation.top(this.canvas)
    };
  }
}

正如@Chris所解释的,
this
不是引用我的顶级对象
config
,而是父对象
布局

向上移动getter可以解决这个问题

const config = {
  get layout() {
    return {
      base: layout.base.bottom(this.canvas),
      annotation: layout.annotation.top(this.canvas)
    };
  }
}

.canvas
不是
布局
对象的属性,而是
配置
对象的属性,因此您无法使用
访问它(如日志所示,它指的是
布局
)。相反,使用

import path from "path";
import layout from "./layouts";

export default const config = {
  canvas: { width: 80, height: 80 },
  layout: {
    get base() {
      return layout.base.bottom(config.canvas);
    },
    get annotation() {
      return layout.annotation.top(config.canvas);
    }
  }
};

.canvas
不是
布局
对象的属性,而是
配置
对象的属性,因此您无法使用
访问它(如日志所示,它指的是
布局
)。相反,使用

import path from "path";
import layout from "./layouts";

export default const config = {
  canvas: { width: 80, height: 80 },
  layout: {
    get base() {
      return layout.base.bottom(config.canvas);
    },
    get annotation() {
      return layout.annotation.top(config.canvas);
    }
  }
};