什么时候应该在JavaScript中使用数据类型类

什么时候应该在JavaScript中使用数据类型类,javascript,class,architecture,business-objects,Javascript,Class,Architecture,Business Objects,我是C#出身。我最近一直在使用JavaScript。在一个新的应用程序中,我有一个mysql/php后端。我会来回传递很多“类型” 所以在我的数据库中,我有几个表,比如 table1 id, fieldx,fieldy,fieldz table2 id, fielda,fieldb,fielc 在c语言中,我肯定会为代码中的所有对象编写类。这让我实现了类似的东西(在我的JavaScript应用程序中): 在大约6张桌子之后,我突然想到,也许上这些课毫无意义 所以我的问题是,在JavaScri

我是C#出身。我最近一直在使用JavaScript。在一个新的应用程序中,我有一个mysql/php后端。我会来回传递很多“类型”

所以在我的数据库中,我有几个表,比如

table1
id, fieldx,fieldy,fieldz

table2
id, fielda,fieldb,fielc
在c语言中,我肯定会为代码中的所有对象编写类。这让我实现了类似的东西(在我的JavaScript应用程序中):

在大约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
额外参考:

更新:
为了可读性和可伸缩性以及您来自C#的观点,您可能希望坚持使用“类”实现,因为它将定义原始数据和您正在使用的对象之间的相关性。
您很有可能处理一些可能杂乱无章的数据。
MVC可能是您的解决方案。它试图给你所期待的混乱带来一些秩序。我建议你看看其中的一些,如:AngularJS或Ember。
另一种解决方案可能是reactivejs,但大多数情况下,如果您打算根据您的数据与DOM交互(reactivejs和Facebook的reactive都是好的)


作为安全注意事项,我想补充一点,将数据紧密地映射到数据库并不是一种最佳做法,但这是您的职责。

Javascript是一种有趣的语言,有很多方法可以做到这一点。对象是Javascript中有或没有名称的对象<代码>{}只是一种创建代码的简单方法

如果您想要可读性,那么您的初始示例就是最佳选择

如果您只想将数据块放入数组中,那么第二个示例是合适的。就我个人而言,如果只是数据,我会使用你后面的例子


如果您正在使用函数什么的以及数据存储,并且计划在代码中多次重用它,那么是的,定义您的对象并适当地调用它

JavaScript没有类,它是一种函数式语言,函数是js中的一级公民,这意味着函数是一个对象


从您的示例中,我可以看出您对类的意图只是传递数据,而使用json非常适合这一点。

有趣的JavaScript很有趣,我喜欢有趣。我只是喜欢我以前用一种方式做事,这是正确的,而且很有效。随着时间的推移,我转向了一种新的方式,而且,它仍然是正确的和有效的。做事情的方法有很多,在优化方面,让事情变得更小更快是很有趣的。我也喜欢压缩代码可以得到的,因为你不像C++,不需要返回布尔值,当使用<代码> < < /> >或<代码> & &代码>操作。我编辑我的帖子。我的意思是函数table1不是var table1=function(这是我向类中添加方法的方式),但是对于这些,它们只是简单的数据,要映射到数据库,所以类中没有函数。我想我担心如果我没有任何数据类型的类,我最终会遇到一些“问题”,但也许我需要克服它。但是在一个有5个页面和15个源文件的中型应用程序中,JavaScripter如何跟踪他们的数据??他们在整个代码中都放了/*table1*/类型的注释吗?好吧,我想你要转到MVC~realm:)我将用一些有用的提示更新答案。感谢更新,我确实理解数据库映射点。我已经为这个应用选择了knockout.js,数据将主要通过ajax来回传输。现在我将把我的“structs”保留为函数格式,仅供参考,因为这样代码高亮显示可以帮助我阅读它。但在实际创建新对象时,我将避免使用“new”语法,并看看它是如何运行的。谢谢。有趣的是,上次我读到Javascript vs Javascript时,答案是MS称之为Javascript,但Javascript将是实际的通用名称。我更喜欢Javascript,因为Javascript使它看起来与Java关系太密切了。但我想无论“维基百科”怎么说都是“正确的”。无论如何,谢谢你的编辑。
var table1 = {};
table1.id = 1;
table1.x = 2;
table1.y = 3;
table1.z = 4;
console.log(table1.id); //outputs: 1