我有以下代码,它是一个具有函数数组的变量,但是我无法访问它们,发送错误。我需要它们之间的帮助,但是尝试访问其中一个时,会给我一个错误。
var mivarobject = function(){
this.helpers = {
function1: function(){
return 1;
},
function2: function(){
return this.helpers.function1() + 1;
},
};
};
console.log((new mivarobject()).helpers.function2());
如何在它们之间进行访问?
答案 0 :(得分:2)
使用bind
或箭头功能:
var mivarobject = function() {
this.helpers = {
function1: function() {
return 1;
},
function2: function() {
return this.helpers.function1() + 1;
}.bind(this),
};
};
console.log((new mivarobject()).helpers.function2());
var mivarobject = function() {
this.helpers = {
function1: function() {
return 1;
},
function2: () => this.helpers.function1() + 1,
};
};
console.log((new mivarobject()).helpers.function2());
答案 1 :(得分:1)
如果您以function2
的方式调用helpers
,则其this
的值将设置为helpers
。如果function2
要调用helpers
的另一个方法,则可以将其作为this
的属性来访问。基本上,对this.helpers
的引用既多余又不正确。
将function2定义更改为
function2: function(){
return this.function1() + 1;
}
,它将按预期工作。