1

我来自 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 中为我的应用程序数据建模时遇到的一个基本语言问题。这些类有什么优势(只有数据字段)还是只是一个错误。谢谢。

4

3 回答 3

1

这取决于,
注意:大多数来自强大的 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 是一些不错的)。

作为安全性说明,我想补充一点,将数据紧密映射到数据库不是最佳实践,而是您的电话。

于 2013-10-11T18:09:06.840 回答
1

Javascript 是一门有趣的语言,有很多方法可以做事。对象是 Javascript 中带有或不带有名称的对象。 {}只是创建一个的一种简便方法。

如果您要提高可读性,那么您的初始示例将是可行的方法。

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

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

于 2013-10-11T18:10:12.100 回答
1

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

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

于 2013-10-11T18:10:37.183 回答