Javascript Angularjs服务、工厂和原型继承
从我所阅读和测试的内容来看,尽可能避免构造函数和利用原型继承是有好处的。它的速度更快(虽然不是很多,但我必须循环使用+100000个项目),允许更大的灵活性,并且更符合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){
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:没有必要。这正是我喜欢的风格。而且,我不会说原型继承必然更快。。它只是占用更少的内存。如果您有一个单例或什么的,就没有必要使用原型继承。。