&引用;这";函数上下文中的javascript关键字
我只是想知道在下面函数的上下文中“&引用;这";函数上下文中的javascript关键字,javascript,function,angularjs,this,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.origi
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(this的类型)代码>打印对象
上面的片段取自
编辑:这是完整的代码。我很抱歉:我应该把它放在第一位
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('/');
});
};
}
通常此
表示调用函数的上下文
在您的例子中,这个函数本身是独立的,因此这个
表示当前浏览器窗口/文档通常这个
表示调用函数的上下文
在你看来,这个函数本身是独立的,因此这个表示当前的浏览器窗口/文档我假设这个函数实际上是一个要实例化的对象。我想您会在代码中找到类似var myeditctrl=neweditcontrol(…)的内容。在这种情况下,这是指myeditctrl对象。我假设该函数实际上是一个要实例化的对象。我想您会在代码中找到类似var myeditctrl=neweditcontrol(…)的内容。在这种情况下,这是指myeditctrl对象。那么,typeof
总是打印变量的类型,如果this
是EditCtrl,那么它仍然是一个对象,因此它是正确的。记住,typeof
永远不会告诉你对象的“类”,你应该试着完整地记录它,看看它是什么。马特奥:谢谢。那么,我如何判断一个对象是否是一个函数呢?我应该使用什么关键字或反射技巧?嗯,typeof
总是打印变量的类型,如果this
是EditCtrl,那么它仍然是一个对象,因此它是正确的。记住,typeof
永远不会告诉你对象的“类”,你应该试着完整地记录它,看看它是什么。马特奥:谢谢。那么,我如何判断一个对象是否是一个函数呢?我应该使用什么关键词或反射技巧?我已经编辑了我的帖子。我猜“这”一定是指模块…我已经编辑了我的帖子。我猜“这”一定是指模块…拉布:我编辑了这篇文章。拉布:我编辑了这篇文章。