Javascript Angularjs服务、工厂和原型继承

Javascript Angularjs服务、工厂和原型继承,javascript,angularjs,prototypal-inheritance,Javascript,Angularjs,Prototypal Inheritance,从我所阅读和测试的内容来看,尽可能避免构造函数和利用原型继承是有好处的。它的速度更快(虽然不是很多,但我必须循环使用+100000个项目),允许更大的灵活性,并且更符合JavaScript的理念 那么,我的问题是如何利用Angularjs工厂/服务来使用原型继承而不是服务建议的构造函数逻辑 以下是我的例子: angular.module('components', []) .service('Item', function() { var Item = function(val){

从我所阅读和测试的内容来看,尽可能避免构造函数和利用原型继承是有好处的。它的速度更快(虽然不是很多,但我必须循环使用+100000个项目),允许更大的灵活性,并且更符合JavaScript的理念

那么,我的问题是如何利用Angularjs工厂/服务来使用原型继承而不是服务建议的构造函数逻辑

以下是我的例子:

angular.module('components', [])
.service('Item', function() {
    var Item = function(val){
        this.func1 = function() {....};
        this.func2 = function() {....};
        this.func3 = function() {....};
         //... lots of functions
    }
    return Item; // @Flex, Forgot this, tnx
});

angular.module('main', ['components'])
.controller('MainCtrl', function(Item) {
    var items = [];
    _.each(largeArray, function(itm) { 
        items.push(new Item(itm));
    });
});
如何更改服务或工厂以创建使用原型继承继承继承所有功能的项?既然这在技术上更快(我知道的不多)&更适合体验,为什么它不是标准的呢?我对Angularjs有些不了解吗?

而不是

var Item = function(val){
    this.func1 = function() {....};
    this.func2 = function() {....};
    this.func3 = function() {....};
     //... lots of functions
}
你可以用

var Item = (function(){
   var Item = function(val){
     // put attributes here not methods...
   }
   Item.prototype.func1 = function(){...};
   Item.prototype.func2 = function(){...};

   return Item;
})()
我想这就是你的意思。但这与angularjs无关。。这就是如何以一种干净的方式实现原型继承


顺便说一句,您的示例不应该做任何事情,因为您不会从服务返回任何内容。

我不确定,但这可能会有所帮助:我有一个类似的问题,并且得到了一个非常有用的答案,这可能也会对您有所帮助。不过,我认为IEFE是不必要的,Angular的
服务
回调就是这样做的implicitly@Bergi:没有必要。这正是我喜欢的风格。而且,我不会说原型继承必然更快。。它只是占用更少的内存。如果您有一个单例或什么的,就没有必要使用原型继承。。