💡
原文约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表示数组的元素数量。
🏷️
标签
➡️