JavaScript Array、Stack、Queue——这种特定 API 设计背后的动机是什么?

标签 javascript arrays data-structures

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

  1. Array通过提供pushpop方法实现Stack, 但是 peek 不见了,为什么? (是的,实现起来很简单,但仍然)
  2. Array 实现了 Queue,但是 操作被命名为 push-shiftunshift-pop 而不是 enqueuedequeue,为什么命名不同?这是受 Python 和 Ruby 启发的吗?
  3. 为什么将 Array、Stack 和 Queue 的 API 合并到一个对象中,而不是分离接口(interface)并为其创建不同的对象?是因为实现便宜吗?
  4. 从语义上讲,在许多语言(C#、C++、Java)中,数组是内存中的一个连续 block ,并且不可调整大小。另一方面,允许轻松添加元素的基本集合是列表(ArrayList 或 LinkedList 等)。如果 Array 在 javascript 中被命名为 List 不是更好吗?
  5. Array 是如何在底层实现的?我在哪里可以找到非常详细的描述?

最佳答案

  1. JavaScript 是在 10 天内发明的,从那以后就再也没有添加过 peek,主要是因为它易于实现,也许有一天。

  2. 和你知道的不一样

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

  4. 本来可以用其他方式命名的,现在已经太晚了。

  5. 它取决于引擎,主要类似于 Python

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

关于JavaScript Array、Stack、Queue——这种特定 API 设计背后的动机是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43824909/

相关文章:

javascript - 如何在使用 jquery 关闭前一个 div 时打开下一个 div?

c++ - IntelliSense:类型为 "const char *const []"的成员不能具有类内初始化程序

c - 链表打印功能不起作用

iOS Cocoa Touch 添加对象到 NSArray

c - 如何使用指针和 malloc 将字符存储到数组中?

c++ - 排序数组的计算复杂度

c++ - 寻找用于计算 IP 地址的算法/类(直方图)

javascript - 将相同的元素 append 到两个下拉列表会导致仅 append 最后一个

javascript - 与字边界相比,正则表达式 (\B) 中的非字边界是什么?

javascript - OpenTok 视频聊天