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