“关联数组”和“对象”都是键值对,有什么区别吗?

“关联数组”和“对象”都是键值对,有什么区别吗?
如果没什么区别的话,为什么要同时存在?

阅读 4.7k
4 个回答

一切皆对象,一切对象的本质都是关联数组,都可用for in 遍历。

你这没说清楚是什么语言,不同语言的差异较大。对于PHP来说:
对象是类的实例化,也就是说对象肯定有它的类。
对象的成员可以是很多类型,比如对象,数组,函数等。
对象的成员可以有权限控制。
关联数组是数组。
对于js来说:
一切都是继承自Object对象,一切都是对象,且对象其实就是关联数组。
所以js的对象并非传统意义上的那种new出来的对象,因此也不具备类的一些特性比如继承重载权限等,因为它其实是个关联数组。

数据类型不一样啊,首先你得弄清楚最基础的数据类型

拿泛用的数据结构(数组、字典)表示数据是函数式的特征。一些动态语言的对象在字典的基础上实现了面向对象的特性。比如封装,字典不大可能实现可见度的控制,而创建方法也需要手动绑定。你拿scheme模拟一个oo系统就知道了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进