是否所有面向对象的语言都会在内存中创建大量重复信息
Do all object-oriented languages create a lot of duplicate information in memory?
我现在正在读一本关于JS和其他网络内容的书,这就是我遇到的关于原型关键字的内容:
prototype 关键字可以为您节省大量内存。在 User 类中,每个实例都将包含三个属性和方法。因此,如果内存中有 1,000 个这些对象,则 showUser 方法也将复制 1,000 次。但是,由于该方法在每种情况下都是相同的,因此您可以指定新对象应引用该方法的单个实例,而不是创建该方法的副本。
难道任何面向对象的语言都不是这样的行为吗?我读过一些关于C++、C#的书,但从未被告知这一点。我认为在类中创建静态方法并从非静态方法调用它们,或者这在其他语言中不是问题,我什至不应该记住这一点?
在 C# 和其他静态类型语言中,每个类用户的方法定义一次,然后该对象的每个实例化仅引用单个定义。因此,不需要与 JS 中的原型相同的构造。
原型是一种非常不同的OOP方式。
使用此范例,对象包含代码和数据。这就是为什么如果你复制对象数千次,就会有数千个方法的副本。在更常见的继承范式中,类只有对其方法的引用,该方法在对象之外。
很少有语言遵循这种范式,但Javascript就是其中之一。大多数OOP语言,如C#或C++,没有你所说的那种原型,所以它们没有这个特定的问题。
相关文章:
- 如何通过解析类信息来使用jQuery创建类
- 如何创建multiselect来显示Django中每个选定项的详细信息
- 如何创建一个脚本,该脚本给定网站列表,它使用其搜索功能来获取信息
- 是否所有面向对象的语言都会在内存中创建大量重复信息
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- Node.js创建一个模块来收集内存(ram)信息
- 如何在HTML中创建一个信息框,显示与悬停SVG路径相关的信息
- 我如何创建一个Chrome应用程序,有效地充当信息亭模式下的启动页面
- 想要在谷歌地图中为标记创建信息窗口
- 为 Google 地图信息框创建自定义关闭按钮
- 在 Backbone.js 中为集合中的一个元素创建详细信息页面
- 如何动态创建集合名称(取决于用户信息)
- Rally sdk 2实用程序用于创建指向详细信息页面/编辑弹出窗口的链接
- 创建可重复的 HTML 表单并从 JS 数组加载信息
- 如何使用php创建应用程序ID后从Facebook获取用户详细信息
- 使用个人信息创建多用户登录系统
- 创建谷歌地图自定义信息窗口的当前方式
- 如何从动态创建的表中删除信息
- 如何为谷歌地图v3中的每个标记创建信息窗口
- 在通过loadGeoJson()加载的特性上创建信息窗口