javascript - "this"函数上下文中的 javascript 关键字

标签 javascript function angularjs this

我只是想知道“this ”关键字在下面函数的上下文中指的是什么:

function EditCtrl($scope, $location, $routeParams, Project) {
  var self = this;

  Project.get({id: $routeParams.projectId}, function(project) {
    self.original = project;
    $scope.project = new Project(self.original);
  });

  $scope.isClean = function() {
    return angular.equals(self.original, $scope.project);
  }

  $scope.destroy = function() {
    self.original.destroy(function() {
      $location.path('/list');
    });
  };

  $scope.save = function() {
    $scope.project.update(function() {
      $location.path('/');
    });
  };
}

特别是,我以为“this”指的是EditCtrl功能但是console.log(typeof this);打印object !!!

以上代码片段取自http://angularjs.org/#project-js

编辑:这是完整的代码。抱歉:我应该首先将其包含在内......

angular.module('project', ['mongolab']).
  config(function($routeProvider) {
    $routeProvider.
      when('/', {controller:ListCtrl, templateUrl:'list.html'}).
      when('/edit/:projectId', {controller:EditCtrl, templateUrl:'detail.html'}).
      when('/new', {controller:CreateCtrl, templateUrl:'detail.html'}).
      otherwise({redirectTo:'/'});
  });


function ListCtrl($scope, Project) {
  $scope.projects = Project.query();
}


function CreateCtrl($scope, $location, Project) {
  $scope.save = function() {
    Project.save($scope.project, function(project) {
      $location.path('/edit/' + project._id.$oid);
    });
  }
}


function EditCtrl($scope, $location, $routeParams, Project) {
  var self = this;

  Project.get({id: $routeParams.projectId}, function(project) {
    self.original = project;
    $scope.project = new Project(self.original);
  });

  $scope.isClean = function() {
    return angular.equals(self.original, $scope.project);
  }

  $scope.destroy = function() {
    self.original.destroy(function() {
      $location.path('/list');
    });
  };

  $scope.save = function() {
    $scope.project.update(function() {
      $location.path('/');
    });
  };
}

最佳答案

通常 this 表示调用函数的上下文

在您的情况下,这个函数看起来是独立的,因此 this 表示当前浏览器窗口/文档

关于javascript - "this"函数上下文中的 javascript 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15222985/

相关文章:

c++ - 有关使用return的C++函数

javascript - 循环数组Javascript后替换对象属性值中的字符串

javascript - Android 版格子链接

javascript - 主干刷新 View 事件

javascript - 如何通过单击其中的复选框来折叠 bootstrap Accordion

javascript - 嵌套折线图未显示

javascript - 服务器端 javascript 函数在 mongoDB 中是否存在性能问题?

javascript - Node.js 生成与执行

javascript - AngularJS 中的 HTML 标记

AngularJS UI 选择验证