为什么在大多数示例中使用'this'时创建新变量

时间:2016-04-27 09:16:00

标签: javascript angularjs function this

我正在从tutorial阅读AngularJS。我不知道为什么他们使用'this'关键字声明新变量。没有那个新的关键字,我们可以使用'this'而不需要新的变量(self)。

function TestCtrl() {

  var self = this;
    self.people = [
      {
        name: "Eric Simons",
        born: "Chicago"
      },
      {
        name: "Albert Pai",
        born: "Taiwan"
      },
      {
        name: "Matthew Greenster",
        born: "Virginia"
      }
    ];
}

angular.module('app', [])
.controller('TestCtrl', TestCtrl);

有什么不同吗?

2 个答案:

答案 0 :(得分:0)

this的上下文会根据您使用它的位置而发生变化。

controller('myController', function() {

   var a = this;


   $myElement.each(function(){
      var b = this;
   })
})

在上面的例子中,this在他们使用的地方的背景是不同的。

有时可能需要保存对this的引用,以便在其他地方使用它。

答案 1 :(得分:0)

在您为变量分配this所提供的示例中,没有必要,但通常是按惯例完成的,因为它可以提高代码的可读性。

this引用的对象根据其使用范围而变化。通过将其分配给特定范围内的变量,可以固定该对象,以便可以在子范围中引用它。

您没有使用任何子范围,因此您可以直接引用this来逃避。