[英]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.