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

iro*_*e13 7 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. 如何在引擎盖下实现Array?我在哪里可以找到非常详细的描述?

Wal*_*ril 1

  1. JavaScript 在 10 天之内就被发明了,从此以后再也没有添加过 peek,主要是因为它很容易实现,也许有一天。

  2. 与你所知道的不同 是的

  3. 它是一种高级编程语言,还可以查看类型数组

  4. 它本来可以以其他方式命名,但现在为时已晚。

  5. 这取决于引擎,主要像Python一样

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