在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

我正在学习如何实际使用JavaScript。我遇到了一个错误的情况。错误是:
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;
这应该能奏效