我是这类新手的新手,我经历了几个js教程,我发现了这两种函数的编码标准,如下所示:
return({
error: function(message){
// Code here
},
debug: function(message){
// Code here
}
});
另一个喜欢
this.error = function(message){
//Code Here
};
this.debug = function(message){
//Code Here
};
return this;
我是编码新手,所以对编码格式有一点了解。你能解释一下两个片段之间的基本区别吗?但两者的用法是一样的。
答案 0 :(得分:1)
他们几乎一样。
第一个从函数返回一个对象文字:
app.factory('myFactory', function() {
var var1 = 'a';
var var2 = 'b';
return {
method1: function() { ... },
method2: function() { ... },
property1: var1,
property2: var2
};
});
第二个返回Angular将调用的函数,如下所示:var fn = new MyFunction();这基本上就是服务。
app.service('MyFunction', function() {
var var1 = 'a';
var var2 = 'b';
this.method1 = function() { ... };
this.method2 = function() { ... };
this.property1 = var1;
this.property2 = var2;
});
服务使用'这个'关键字,因为函数构造函数被调用(new MyFunction())。
两者都是单身,两者都是可注射的。正如你所看到的,两者之间几乎没有什么区别。
答案 1 :(得分:0)
这是在JavaScript中实现构造函数的两种不同方式。区别在于你如何调用构造函数。
如果是
function Foo(){
return { bar : 1 } ;
} ;
通过将其称为Foo()或新Foo()或X.Foo()来调用它来创建对象的新实例。然而构造函数属性将是Object构造函数。
但是在
的情况下function Foo(){
this.bar = 1 ;
return this ;
} ;
当它被调用为新的Foo()时,它将返回一个带有构造函数Foo的对象,当调用它为Foo()时它将返回全局对象,并且你将在全局对象中有bar = 1,并且它将在返回时返回X如果X具有方法Foo,则将其称为X.Foo(),并且X将具有bar = 1属性