我来自C#背景。最近我一直在使用JavaScript。在一个新的应用程序上,我有一个mysql / php后端。我将来回传递很多“类型”。
所以在我的数据库中,我有几个表,例如
table1
id, fieldx,fieldy,fieldz
table2
id, fielda,fieldb,fielc
在C#中,我肯定会为代码中的所有代码编写类。这导致我实现了这样的事情(在我的JavaScript应用中):
function table1(id, x,y,z){
this.id=id;
this.x=x;
this.y=y;
this.z=z;
}
经过大约6张桌子之后,我突然想到也许做这些课程根本没有意义。
所以我的问题是,在JavaScript应用程序中,是否对数据类型使用“类”?或者我应该只是“记录”哪些字段/类型是预期的,所以在代码中而不是
a.push(new table1(5,1,2,3));
我只有
a.push({id:5,x:1,y:2,z:3});
这似乎是一个首选项问题,但这是我在尝试了解如何在JavaScript中为应用程序数据建模时遇到的一个基本语言问题。类(仅包含数据字段)是否有任何优势,还是只是一个错误。谢谢。
最佳答案
这取决于,
注意:大多数来自强大OO语言的程序员在JavaScript的功能行为方面都会遇到像您这样的麻烦(您并不孤单)。
如果要创建更接近C#的内容,请执行以下操作:
function Table1(id, x, y, z) {
this.id=id;
this.x=x;
this.y=y;
this.z=z;
}
Table1.prototype.mySpecialTable1Method= function()
{
console.log(this.id);
};
实现方式:
var t = new Table1(1, 2, 3, 4);
t.mySpecialTable1Method();// outputs: 1
如果您需要具有与(即将成为)对象交互的方法,那么我肯定会使用上面的代码。另外,在使用与特定“类型”相关的对象(命名数据)时,它会变得很清楚。
但是,如果您的对象不需要任何特殊的“处理”,那么使用普通的js对象文字并传递它们就不会有任何问题(这对于小型项目而言可能很好)。
大致情况:
var table1 = {};
table1.id = 1;
table1.x = 2;
table1.y = 3;
table1.z = 4;
console.log(table1.id); //outputs: 1
额外参考:
http://www.youtube.com/watch?v=PMfcsYzj-9M
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
更新:
出于可读性和可伸缩性以及您从C#入手的角度出发,您可能希望坚持使用“类”实现,因为它会定义原始数据和您使用的对象之间的相关性。
您很有可能要处理一些可能是杂乱无章的数据。
MVC可能是您的解决方案。它试图使您所期望的混乱状况有所改善。我建议检查其中的一些,例如:AngularJS或Ember。
另一个解决方案可能是反应式js-但大多数情况下,如果您要根据数据与DOM交互(ReactJS和Facebook的React是一些不错的方法)。
为了安全起见,我想补充一点,将数据紧密映射到db不是最佳实践,但这是您的要求。