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




  

相关话题

  《阮一峰版快速排序完全是错的》一文是否存在事实错误? 
  请问一下各位大佬,js的静态方法有啥作用呀,写工具类吗,小菜鸡想不出来静态方法有啥作用? 
  请问一下各位大佬,js的静态方法有啥作用呀,写工具类吗,小菜鸡想不出来静态方法有啥作用? 
  Node.js 在双十一中有哪些应用,表现如何? 
  Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么? 
  如何优雅地将程序设计语言的名字翻译成汉语? 
  JavaScript中对 function 的参数进行重新赋值的影响? 
  前端的未来: 后端会越来越同质化, 只是一个数据库, 大部分功能都挪到前端吗? 
  如何不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标? 
  微软在编程领域是不是大势已去? 

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





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