Angular.jsのServiceとFactoryに関して

ServiceとFactoryの違い

Serviceは、thisがあるが、returnがない。

// ----------------------------
// Service
// ----------------------------
(function() {
    'use strict';
    
    angular
        .module('weatherApp')
        .service('exampleService', exampleService);
    
    function exampleService() {
        // public var
        var foo;
        
        // private var
        var bar;
        
        // public service
        // FACTORY HARUS ADA THIS
        // TIDAK ADA RETURN
        this.foo = foo;
        this.doSomething = doSomething;
        
        // public method
        function doSomething () {
            cook();
            console.log("exampleService");
        }
        
        // private method
        function cook () {
            bar = 1;
            foo = 3;
        }
    }
    
})();

Factoryは、returnがあるが、thisがない。

// ----------------------------
// Factory
// ----------------------------
(function() {
    'use strict';
    
    angular
        .module('weatherApp')
        .factory('exampleFactory', exampleFactory);
    
    function exampleFactory() {
        // public var
        var foo;
        
        // private var
        var bar;
        
        // public service
        // FACTORY HARUS ADA RETURN
        // TIDAK ADA THIS
        return {
            foo: foo,
            doSomething: doSomething  
        };
        
        // public method
        function doSomething () {
            cook();
            console.log("exampleFactory");
        }
        
        // private method
        function cook () {
            bar = 1;
            foo = 3;
        }
    }
    
})();