Node.js Can';在ES6模块中使用getter访问对象文字属性
当我发现时,我正在寻找一种自引用对象以访问其属性的方法(请参阅) 我正在使用NPM模块,无法访问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
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);
}
}
};