Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs 1工厂应该返回实例化对象还是构造函数?_Javascript_Angularjs - Fatal编程技术网

Javascript Angularjs 1工厂应该返回实例化对象还是构造函数?

Javascript Angularjs 1工厂应该返回实例化对象还是构造函数?,javascript,angularjs,Javascript,Angularjs,我正在Angular 1中创建一个工厂,我想用它在消费代码中创建一个新的实例。 所以问题是工厂应该返回一个返回对象新实例的函数,还是我应该返回构造函数。。。为什么 选项1,创建功能: module.factory('MyObject', function(){ function MyObject(args){ stuff... } return { create: function (ar

我正在Angular 1中创建一个工厂,我想用它在消费代码中创建一个新的实例。 所以问题是工厂应该返回一个返回对象新实例的函数,还是我应该返回构造函数。。。为什么

选项1,创建功能:

    module.factory('MyObject', function(){

        function MyObject(args){
            stuff...
        }

        return {
            create: function (args) {
                return new MyObject(args);
            }
        }
    })
然后可以实例化

var thing = MyObject.create(args);
var thing = new MyObject(args);
选项2,返回构造函数函数:

    module.factory('MyObject', function(){

        function MyObject(args){
            stuff...
        }

        return MyObject;
    })
然后可以实例化

var thing = MyObject.create(args);
var thing = new MyObject(args);

Amgular正在对你的MyObject进行“新”操作。保证是单身。您应该返回一个构造函数。@Stevo您想在请求服务时重新实例化类吗?@brewsky我正在寻找更详细的答案。我知道提供者是单例的,但我需要理解的两个场景之间有细微的差别。@PankajParkar我想做我不在Angular工作时会做的事情。我希望能够根据我创建的原型创建对象“MyObject”。但是我想在我的其他服务和控制器等中创建它们。因此我会在我的应用程序的其他位置注入MyObject,但是注入的服务应该是带有返回新对象的create函数的object literal,还是简单地返回构造函数并让使用代码实例化对象(使用新的MyObject)。有什么区别?有吗?@Stevo我知道你想要什么了。我认为这两种选择看起来和我很相似。。找出第一个看起来更聪明的实例,当你要求时返回原型对象。Amgular正在你的MyObject上做“新”的。保证是单身。您应该返回一个构造函数。@Stevo您想在请求服务时重新实例化类吗?@brewsky我正在寻找更详细的答案。我知道提供者是单例的,但我需要理解的两个场景之间有细微的差别。@PankajParkar我想做我不在Angular工作时会做的事情。我希望能够根据我创建的原型创建对象“MyObject”。但是我想在我的其他服务和控制器等中创建它们。因此我会在我的应用程序的其他位置注入MyObject,但是注入的服务应该是带有返回新对象的create函数的object literal,还是简单地返回构造函数并让使用代码实例化对象(使用新的MyObject)。有什么区别?有吗?@Stevo我知道你想要什么了。我认为这两种选择看起来和我很相似。。首先,哪一个看起来更聪明,哪一个是实例化的&当您请求时返回原型对象。。