我正在使用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 });
所以我想从algorithm
中的generate函数访问myCompany
属性。
答案 0 :(得分:0)
您应该能够像这样访问算法: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);
}
}
答案 1 :(得分:0)
object1.field1 = object2
是一种单向关系:
object1
之后可以通过object2
来访问field1
object2
完全不知道object1
在身边,因此也不知道其他领域。您可以将其作为参数传递,例如object1.field1.dosomething(object1.field2)
,在实际情况下,它可以转换为:
myCompany.employee.code.generate(myCompany.algorithm)
(并且当然假设generate()
进行了修改以期望使用这种参数。新添加的option
不会影响该模式)