JavaScript 类: 从对象的函数中访问方法 属性
JavaScript Classes: Accessing method from within an Object's function property
我想知道是否有人知道我遇到的问题的解决方案。假设我们有以下 JavaScript class:
class foo {
// Class Method.
makeNoise() {
console.log("bar");
}
// Class Object
classObject = {
makeASound: function() {
makeNoise();
}
}
}
现在,如果我打电话给:
var foo = new foo();
foo.classObject.makeASound();
我会得到一个错误,说 makeNoise 没有定义。使用 'this.' 是行不通的,因为在此上下文中它会在 classObject 中查找函数,因此会抛出 'is not a function' 错误。无论如何都可以从对象的函数中访问 makeNoise。
尝试this.makeNoise()
classObject = {
makeASound: () => {
this.makeNoise();
}
}
更新:如果我们为 makeASound
使用箭头函数,我们可以保留我们的 this
绑定到父级 class。 GMaiolo 的回答是正确的。
您需要使用 arrow function in order to avoid creating a new context and then use the keyword this
才能正确访问 class 的 makeNoise
方法
class Foo {
makeNoise() {
console.log("bar");
}
classObject = {
makeASound: () => { // arrow function for lexical scope
this.makeNoise(); // using `this` to refer to the Foo method
},
};
}
如果愿意,您也可以使用 Function.bind()
我想知道是否有人知道我遇到的问题的解决方案。假设我们有以下 JavaScript class:
class foo {
// Class Method.
makeNoise() {
console.log("bar");
}
// Class Object
classObject = {
makeASound: function() {
makeNoise();
}
}
}
现在,如果我打电话给:
var foo = new foo();
foo.classObject.makeASound();
我会得到一个错误,说 makeNoise 没有定义。使用 'this.' 是行不通的,因为在此上下文中它会在 classObject 中查找函数,因此会抛出 'is not a function' 错误。无论如何都可以从对象的函数中访问 makeNoise。
尝试this.makeNoise()
classObject = {
makeASound: () => {
this.makeNoise();
}
}
更新:如果我们为 makeASound
使用箭头函数,我们可以保留我们的 this
绑定到父级 class。 GMaiolo 的回答是正确的。
您需要使用 arrow function in order to avoid creating a new context and then use the keyword this
才能正确访问 class 的 makeNoise
方法
class Foo {
makeNoise() {
console.log("bar");
}
classObject = {
makeASound: () => { // arrow function for lexical scope
this.makeNoise(); // using `this` to refer to the Foo method
},
};
}
如果愿意,您也可以使用 Function.bind()