繁体   English   中英

Javascript:我如何访问嵌套对象内的函数的类属性

[英]Javascript: how can I access a class property to a function inside nested object

我正在使用javascript类,我想做但我不知道如何做。 首先,这是我的班级:

class Company {
  constructor (options) {
    this.employee = options.employee;
    this.algorithm = "AZ1";
  }
}

现在,employee是一个对象,它有另一个嵌套在其中的对象,最终对象包含一系列函数:

employee {
  code {
    generate [Function: generate]
    alter [Function: alter]
  }
}

现在,我的问题是我想从这些函数中的任何一个访问algorithm

顺便说一句, 我正在尝试从使用该类创建的对象执行此操作:

const myCompany = new Company({ employee });

所以我想从myCompany的generate函数访问algorithm属性。

你应该能够像这样访问算法: myCompany.employee.code.generate(myCompany.algorithm)

编辑:从您的原始问题中不清楚您是否试图将算法保持为类私有。 像这样的东西可能会起作用:

class Company {
  constructor (options) {
    this.employee = options.employee;
    this.algorithm = "AZ1";
  }

  generateEmployee = () => {
    this.employee.code.generate(this.algorithm);
  }
}

这将为您提供一个myCompany.generateEmployee方法,调用者可以在不传递算法的情况下使用该方法。

请注意,只有在使用像Babel这样的转换器时,此语法才有效。 如果没有,您可以使用此语法(因此您的方法具有正确的this上下文):

class Company {
  constructor (options) {
    this.employee = options.employee;
    this.algorithm = "AZ1";
    this.generateEmployee = this.generateEmployee.bind(this);
  }

  generateEmployee() {
    this.employee.code.generate(this.algorithm);
  }
}

object1.field1 = object2是单向关系:

  • object1可以通过field1访问object2
  • object2完全没有关于object1在周围的线索,因此它也无法知道其他字段。

您可以将其作为参数传递,例如object1.field1.dosomething(object1.field2) ,在实际情况下转换为:

myCompany.employee.code.generate(myCompany.algorithm)

(当然假设generate()被修改为期望这样的参数。新添加的option不会影响模式)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM