在JavaScript中将JavaScript传递给闭包
我正在学习如何实际使用JavaScript。我遇到了一个错误的情况。错误是:在JavaScript中将JavaScript传递给闭包,javascript,angularjs,Javascript,Angularjs,我正在学习如何实际使用JavaScript。我遇到了一个错误的情况。错误是:TypeError:“未定义”不是对象(计算“this.flagged”)。我已经把我的代码缩小到了它发生的地方。我的代码如下所示: var flagged = false; var intervals = []; return { flagged: flagged, intervals: intervals, createInterval : function (options) { var d
TypeError:“未定义”不是对象(计算“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)抛出错误
我猜这与“这个
”不可见这一事实有关。但是,如果“此
”不可见,我不确定如何获取标记的的值。有人能给我解释一下我需要做些什么来标记的值吗
谢谢大家! 在$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代码>在JavaScript中
var flagged
将是一个作用域变量,我认为这里需要的是一个全局作用域变量,只需从后面删除var
flagged = false;
这应该能奏效