百科问答小站 logo
百科问答小站 font logo



为什么说js中的array不是真array,class不是真class? 第1页

  

user avatar   suo-yu-fei-liang-ren 网友的相关建议: 
      

js中的数组本质上还是一个对象。你可能知道这个,但不知道你有没有深思过它的意思。

比如数组var a=[1,5,6],这是数组字面量的写法。它是一个对象{"0":1, "1":5, "2":6, "length":3…}。数组对象包括了0到n-1和length为n的属性,以及一些数组方法

你可能会注意到我这里属性名都打了引号,因为在ES5中属性名都是字符串,ES6中属性名可以是符号symbol这种基本类型。

所以访问a[1]等同于a["1"],这就给了你一种其他编程语言中的数组的假象。为什么可以写成a[1]呢?因为js有个不成文的规定: 在期望字符串的地方一定会转换成字符串。所以1会转换成字符串形式。

至于class,只是构造函数的语法糖。




  

相关话题

  为什么try catch能捕捉await后promise错误? 和执行栈有关系吗? 
  为什么都说富文本编辑器是天坑? 
  你是如何学会正则表达式的? 
  JavaScript 有必要缓存 for 循环中的 Array.length 吗? 
  TypeScript 不适合在 vue 业务开发中使用吗? 
  既然引用计数在做 GC 时有性能问题,为什么智能指针会广泛应用它? 
  如何评价微信小程序内嵌网页功能开放? 
  为什么vscode中,js代码打开谷歌浏览器会弹出提示窗口? 
  如何用通俗易懂的语言解释脚本(script)是什么? 
  5G 的到来会造成编程语言大灭绝进而 JS 一统应用前端吗? 

前一个讨论
如何评价《明日方舟》sidestory 「遗尘漫步」?
下一个讨论
东德出版的全国地图包含西德吗?





© 2025-05-14 - tinynew.org. All Rights Reserved.
© 2025-05-14 - tinynew.org. 保留所有权利