函数和数组的 .length 属性

函数和数组的 .length 属性

💡 原文约300字/词,阅读约需2分钟。
📝

内容提要

文章讨论了JavaScript中Object.create(Array)的非直观行为,指出它克隆的是Array构造函数而非数组本身,导致.length返回1而Object.keys返回0,展示了对象与数组的区别。

🎯

关键要点

  • JavaScript的行为常常令人困惑,尤其是在比较操作时。
  • 使用Object.create(Array)时,克隆的是Array构造函数而非数组本身。
  • Object.create(Array).length返回1,因为它表示构造函数期望的最小参数数量。
  • Object.keys(Object.create(Array))返回0,因为新对象没有自身的属性,只有原型属性。
  • 对象与数组之间存在重要区别,.length和Object.keys的返回值反映了这一点。

延伸问答

JavaScript中Object.create(Array)的行为是什么?

Object.create(Array)克隆的是Array构造函数,而不是数组本身。

为什么Object.create(Array).length返回1?

因为它表示Array构造函数期望的最小参数数量。

Object.keys(Object.create(Array))返回什么?

它返回0,因为新对象没有自身的属性,只有原型属性。

对象与数组之间有什么重要区别?

对象和数组的.length和Object.keys的返回值反映了它们的不同。

为什么JavaScript的行为常常令人困惑?

因为在比较操作时,JavaScript的某些行为与预期不符。

如何理解函数的.length属性与数组的区别?

函数的.length属性表示期望的最小参数数量,而数组的.length表示数组的元素数量。

➡️

继续阅读