【问题标题】:In JavaScript, is there a word to describe a JSON-serializable object?在 JavaScript 中,有没有一个词来描述一个 JSON 可序列化的对象?
【发布时间】:2014-07-25 18:40:08
【问题描述】:

我正在寻找强调其简单性的简单对象的术语。具体来说,是没有自引用、不包含方法、绑定等(即 JSON 可序列化)的对象。

现在我用这样的词:

  1. “平面对象”
  2. “简单对象”
  3. “数据容器对象”
  4. “JSON 可序列化对象”

我不喜欢它们,因为:

  1. 表示缺乏层次结构,这实际上很好。
  2. 似乎含糊不清。
  3. 似乎也很模糊。
  4. 不是直接提到复杂性,而是强调需求。 JSON 可序列化性实际上并不经常是必需的,而简单性却是。

我要描述的对象示例:

var good_1 = {};

var good_2 = {a: 1, b: 'str'}

var good_3 = {thing: [1,
                      {a: 1,
                       b: 'str'},
                      'word'],
              otherThing: 42};

我想区分的对象示例:

var bad_1 = {thing: 3,
             getThing: function () { return this.thing; }};

var bad_2 = {a: 1};
bad_2['self'] = bad_2;

问题

我应该怎样称呼没有自引用、不包含方法、绑定等(即 JSON 可序列化)的对象?

【问题讨论】:

  • “复杂性”这个词相当模糊。 “JSON-serializable” 看起来很完美,因为这正是您所担心的。您知道,还有其他序列化方案可能与 JSON 有不同的规则,即哪些可以包含哪些不能包含。
  • 有趣...我通常只是称它们为对象-无需超越-但这是我的观点。
  • @Pointy,没错。 “复杂性”和“简单性”的模糊性是我想通过使用一个明确的术语来避免的,即使它是 jarogny。 “JSON-serializable”在技术上是明确的,但我很好奇在记录我的代码时是否可以避免它的需求内涵。我希望一些像我一样迂腐的程序员可以告诉我我的谷歌查询没有出现的对象复杂性类层次结构:-)
  • 由于我们在 JSON(官方)出现之前使用过这些东西,所以我不会称它们为“JSON 的东西”。在我的团队中,我们宁愿使用像 entity or object structure or definition 这样的术语,而不关心它们的复杂程度或嵌套程度。
  • “可序列化”怎么样。用其他语言序列化无法处理函数、引用等。AFAIK。因此,从广义上讲,它描述了您所说的对象/结构的种类。 :)

标签: javascript json terminology code-complexity


【解决方案1】:

The Wikipedia article on serialization 将其描述为:

在计算机科学中,在数据存储的上下文中,序列化是将数据结构或对象状态转换为以后可以在相同或另一个计算机环境中存储和重构的格式的过程。当根据序列化格式重新读取生成的一系列位时,它可用于创建原始对象的语义相同克隆。对于许多复杂的对象,例如那些大量使用引用的对象,这个过程并不简单。面向对象对象的序列化不包括它们之前与之密不可分的任何关联方法。

所以 serializable 对象几乎可以描述您在问题中显示的对象类型,不仅在 Javascript 中,在其他语言中也是如此。

【讨论】:

  • 这个答案与其引用的定义相矛盾。循环数据结构的序列化虽然“不简单”,但也是可能的。 bad_2 示例绝对是可序列化的,只是不能被 JSON.stringify 序列化。
  • 您也可以使用toStringFunction 构造函数序列化/反序列化bad_1,但大多数时候调用“没有自引用且不包含方法、绑定的对象” , etc" 可序列化就可以了。
  • “很好”我的意思是广义上称它们可序列化是可以的。大多数时候序列化对象不包括方法和/或引用(至少在 Javascript 和 PHP 中)。
【解决方案2】:

简单的旧数据结构。

PODS,简称。它们是一种仅由数据字段组成的数据结构,没有行为。该术语与语言无关。

上下文:它们经常与 POJO(普通旧 Java 对象)相提并论,后者的定义略有不同。 This wikipedia page 说它们本质上是带有 getter 和 setter 的 PODS。不过,有些谷歌搜索会出现分歧。

【讨论】:

    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多