JavaScript数组,堆栈,队列 - 这个特定API设计背后的动机是什么?

时间:2017-05-06 20:05:34

标签: javascript arrays data-structures

在我的日常工作中,我主要使用C#并且偶尔只使用javascript,所以请,javascript大师不要粗略地判断我的问题!

  1. Array通过提供pushpop方法实现Stack, 但peek遗失了,为什么? (是的,实施起来很简单,但仍然如此)
  2. 数组实现队列但是 操作名为push - shiftunshift - pop而不是enqueuedequeue,为什么要用不同的名字命名?这是受Python和Ruby的启发吗?
  3. 为什么将Array,Stack和Queue的API合并到一个对象中,而不是分离接口并为其设置不同的对象?是因为实施便宜
  4. 在语义上,在许多语言(C#,C ++,Java)中,Array是内存中的连续块,并且不具有可调整大小。另一方面,允许容易地添加元素的基本集合是List(ArrayList或LinkedList等)。如果在javascript中将Array命名为List,那会不会更好?
  5. 如何在引擎盖下实现阵列?我在哪里可以找到非常详细的描述?

1 个答案:

答案 0 :(得分:1)

  1. JavaScript是在10天内发明的,peek从未添加过,主要是因为它很容易实现,也许有一天。

  2. 与您所知道的不同

  3. 这是一种高级编程语言,也可以查看Typed arrays

  4. 可能已经另有命名,现在为时已晚。

  5. 这取决于引擎,大多数情况与Python

  6. 相同

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray