小编Dav*_*vid的帖子

类中的类?

理想情况下,我想做类似以下的事情:

class Chess = {
  constructor() {
    this.board = ...;
    ...
  };

  class Square = {
    constructor(row, col) {
      this.row = row;
      this.col = col;
  };
};
Run Code Online (Sandbox Code Playgroud)

我的主要动机是,将 Chess 和 Square 类分别定义为:(这指的是 Chess 类)

this.empty(square)
Run Code Online (Sandbox Code Playgroud)

可以缩短为

square.empty()
Run Code Online (Sandbox Code Playgroud)

这更具可读性和更简洁。

不幸的是我不能只做一个

Square.empty()
Run Code Online (Sandbox Code Playgroud)

方法,因为结果取决于 Chess 类中的信息,并且

square.empty(chess)
Run Code Online (Sandbox Code Playgroud)

是没有真正的改善。

我有 Square 课程的原因是这样的

square.up()
Run Code Online (Sandbox Code Playgroud)

看起来比类似的东西好得多

[row, col + 1]
Run Code Online (Sandbox Code Playgroud)

您对我如何实现上述目标有什么建议吗?有什么方法可以在类中编写类或者完全是其他东西吗?

编辑:

根据 likele 和 alex 的建议,我做了以下事情:

我向 Class Square 添加了一个上下文属性

class Square = {
  constructor(context, row, col) {
    this.context = context;
    this.row = row;
    this.col …
Run Code Online (Sandbox Code Playgroud)

javascript oop nested class

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

class ×1

javascript ×1

nested ×1

oop ×1