服务中的“这个”意味着什么

时间:2014-01-13 11:27:17

标签: javascript angularjs

我阅读了有关在angularjs中创建服务的部分代码,我不明白在这种情况下“this”意味着什么(this.uploadFile = function (files)

recipesApp.service('uploadsService', function ($http) {
    var code = '';
    var fileName = '';

    this.uploadFile = function (files) {
        var fd = new FormData();
        //Take the first selected file
        fd.append("image", files[0]);

        var promise = $http.post('/uploads/uploadFile.json', fd, {
            withCredentials: true,
            headers: {'Content-Type': undefined },
            transformRequest: angular.identity
        }).then(function (response) {
                code = response.data.code;
                fileName = response.data.fileName;
                return{
                    code: function () {
                        return code;
                    },
                    fileName: function () {
                        return fileName;
                    }
                };
            });
        return promise;
    };
});

2 个答案:

答案 0 :(得分:3)

this指向服务本身。

recipesApp.service('uploadsService', function ($http) {

该函数是一个构造函数。使用new进行调用时,this指的是uploadsService所创建的实例。

this.uploadFile = function (files) {

这一行将方法uploadFile添加到uploadService

答案 1 :(得分:0)

它指向功能范围。没什么特别的角度服务。

在您的具体情况下,它指向

的功能范围
function( $http ) {
    var code = '';
    ...
}

功能。例如,您可以使用this.code访问同一范围内的code变量。

但是,如果你进入任何内部函数,例如回调,this将指向该函数的范围,你将无法使用this指向父变量。

使用this.uploadFile = function(file){...}您在上下文中定义一个函数变量,以便从应用程序中的其他位置访问“uploadsService”,您将能够使用

uploadsService.uploadFile();