我是淘汰赛的新手。我想知道这三者之间的差异,以及最新框架中哪一个最好。
方法1(InvoiceTypes):使用逗号声明所有变量和方法,最后使用return语句公开公共接口方法。
方法2(OrderTypes):类似于方法1,但使用分号来区分每个变量或方法。
Apprach 3(ModelTypes):类似于方法2,但没有返回语句。
最后在jquery读取的每个方法中指定了start方法的调用方式。
方法1
window.Domain = window.Domain || {}
window.Domain.InvoiceTypes = function () {
var types = ko.observableArray(),
getTypes = function() { return types; },
start = function() {
types.push({name:"knockout"});
},
submit = function() {
alert("submit");
};
return {
getTypes: getTypes,
start: start,
submit: submit
};
}();
方法2
window.Domain.OrderTypes = function () {
var types = ko.observableArray();
var getTypes = function() { return types; };
var start = function() {
types.push({name:"knockout"});
};
var submit = function() {
alert("submit");
};
return {
getTypes: getTypes,
start: start,
submit: submit
};
}();
方法3
window.Domain.ModelTypes = function () {
var self = this;
self.types = ko.observableArray();
self.getTypes = function() { return types; };
self.start = function() {
types.push({name:"knockout"});
};
self.submit = function() {
alert("submit");
};
};
<script type="text/javascript">
$(document).ready(function() {
window.Domain.InvoiceTypes.start();
window.Domain.OrderTypes.start();
var obj = new window.Domain.ModelTypes();
obj.start();
});
</script>
我可以清楚地看到的差异是,单个var声明&amp;通过此关键字返回声明和使用self。
请提供您的意见。
答案 0 :(得分:1)
方法#1和#2类似于静态工厂方法。您不是使用new
关键字创建对象,而是调用静态“工厂”函数,该函数为您创建并返回新类型。至于逗号与分号方法,两者都是有效的,但我更喜欢分号而不是逗号。为什么?因为javascript用分号比用逗号更宽容。你可以在这里和那里省略分号,脚本仍然可以运行,而且必须始终存在逗号才能正确解析javascript。当脚本变大时,使用分号也更容易阅读。
方法#3是大多数淘汰赛的开发者所做或应该做的。首先,因为在函数声明的末尾不需要小()
,所以它看起来更像是一个类。但是,看起来你有错误:
self.start = function() {
//types.push({name:"knockout"}); // types was not declared,
self.types.push({name:"knockout"}); // only self.types was declared
};
......同样的错误
self.getTypes = function() {
//return types; types was never declared
return self.types;
};