我正在学习如何实际使用JavaScript。我遇到了一个错误的情况。错误是:TypeError: 'undefined' is not an object (evaluating 'this.flagged')
。我已经将代码缩小到了发生的地方。我的代码如下所示:
var flagged = false;
var intervals = [];
return {
flagged: flagged,
intervals: intervals,
createInterval : function (options) {
var defer = $q.defer();
if (this.throwsError) {
defer.reject('There was an error creating the interval.');
} else {
this.intervals.push(
$interval(function() {
console.log('here 1');
console.log(this.flagged);
},
1000
));
}
}
};
错误在console.log(this.flagged);
被抛出我猜测它与" this
"" this
"不可见。然而,如果" flagged
"不可见,我不确定如何获取flagged
的值。有人可以向我解释我需要做些什么才能获得{{1}}的价值?
谢谢!
答案 0 :(得分:1)
当您在this
内使用$interval
时,它不会指向您的原始对象,但是,您可以这样做:
var flagged = false;
var intervals = [];
return {
flagged: flagged,
intervals: intervals,
createInterval : function (options) {
var defer = $q.defer(),
self = this;
if (this.throwsError) {
defer.reject('There was an error creating the interval.');
} else {
this.intervals.push(
$interval(function() {
console.log('here 1');
console.log(self.flagged);
},
1000
));
}
}
};
请注意var self = this;
答案 1 :(得分:0)
在JavaScript中,
var flagged
将是一个范围变量,我认为你需要的是一个全局范围变量,只需从它后面删除var。
flagged = false;
应该做的伎俩。