簡體   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