百科问答小站 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,只是构造函数的语法糖。




  

相关话题

  setTimeout 真的有用吗? 
  有哪些短小却令人惊叹的 JavaScript 代码? 
  有哪些短小却令人惊叹的 JavaScript 代码? 
  setTimeout 真的有用吗? 
  你是如何学会正则表达式的? 
  2022 年,学完 JS 高级后的学习路线怎样规划? 
  为什么都说富文本编辑器是天坑? 
  为什么很多国内公司不使用 jQuery 等开源 JS 框架(库),而选择自己开发 JavaScript 框架? 
  为什么JavaScript不能成为自己的标准,非得冒出ES6成为JavaScript的标准呢? 
  为何以下javascript代码在chrome88和firefox85中执行结果为false? 

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





© 2025-03-26 - tinynew.org. All Rights Reserved.
© 2025-03-26 - tinynew.org. 保留所有权利