Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何跨交叉引用私有成员的文件拆分ES6类定义?_Javascript_Node.js_Ecmascript 6_Es6 Class_Private Members - Fatal编程技术网

Javascript 如何跨交叉引用私有成员的文件拆分ES6类定义?

Javascript 如何跨交叉引用私有成员的文件拆分ES6类定义?,javascript,node.js,ecmascript-6,es6-class,private-members,Javascript,Node.js,Ecmascript 6,Es6 Class,Private Members,引用私有成员,例如this.#rts()会出现以下错误: SyntaxError:必须在封闭类中声明私有字段“#rts” 虽然在计算该行时,函数已分配给实例方法,并且已正确绑定。 有没有办法做到这一点,即跨文件引用私有成员 注意:我使用的是节点13 例如: import {Cpu6502} from "./cpu6502.mjs"; console.log((new Cpu6502).beq()); cpu6502.mjs: 说明.mjs: 你可以使用这种方法,但你可能想要一些东西,比如混音

引用私有成员,例如
this.#rts()
会出现以下错误:

SyntaxError:必须在封闭类中声明私有字段“#rts”

虽然在计算该行时,函数已分配给实例方法,并且已正确绑定。
有没有办法做到这一点,即跨文件引用私有成员

注意:我使用的是节点13

例如:

import {Cpu6502} from "./cpu6502.mjs";
console.log((new Cpu6502).beq());
cpu6502.mjs:

说明.mjs:


你可以使用这种方法,但你可能想要一些东西,比如混音

import { lda } from './instructions.mjs'

export class Cpu6502 {
    constructor() {
       this.lda = lda.bind(this);
    }
    A = 0xFF
    #rts() {
        return "RTS";
    }
    ldx() {
        return this.lda();
    }
}`

请在这里发布您的代码。请访问,查看和。做一些研究,搜索相关话题等;如果您遇到问题,请在此处发布您的尝试,注意输入和预期输出。此处有任何帮助:?@mplungjan否,它没有解决跨文件引用私有成员的问题。我收到以下错误:
SyntaxError:Unexpected token'('at Loader.moduleStrategy(internal/modules/esm/translators.js:81:18)
您正在使用什么来传输/绑定它?也许您可以尝试在构造函数中移动A=0xFF。我只是在节点13上运行它。并且已经删除了,因为它是旧测试的剩余部分(仍然是相同的神秘错误),我只需要从另一个文件中声明的绑定函数调用一个私有方法。阅读我可以告诉你的代码有点棘手。但这应该是你想要的。是的,我发现最常见的解决方案是下划线约定。
export function beq() {
    return this.#rts() // If this line references a public member instead,  
                       // it works fine and `this` is correctly bound.
}
import { lda } from './instructions.mjs'

export class Cpu6502 {
    constructor() {
       this.lda = lda.bind(this);
    }
    A = 0xFF
    #rts() {
        return "RTS";
    }
    ldx() {
        return this.lda();
    }
}`