换句话说,我有什么选择在JavaScript中分配内存?
我知道你可以在全局或在函数范围内分配内存.我可以动态分配内存吗?什么是new运营商究竟意味着什么?
编辑:这是一个具体的例子.你将如何实现从用户读取整数值 - n然后将n整数读入数组?
jrh*_*ath 24
你不能分配内存.你可以创建对象.这是什么new.
现在,javascript是一个奇怪的生物:函数也是javascript中的对象.所以这意味着你可以使用实例化所有东西new.
因此,new运算符意味着正在创建新对象.
Javascript也垃圾收集这些变量,就像在java中发生的那样.因此,如果您了解java,那么您应该很容易绘制相似之处.
干杯,
JRH
PS:当你分配对象时,你真的在分配内存.只是,你没有明确地这样做.您可以分配一个数组,并使其行为类似于内存缓冲区,但这会大大降低javascript性能:javascript数组不是内存缓冲区,它们也是对象(就像其他所有内容一样).
JavaScript有垃圾收集并为您处理.
但是,您可以delete在适当的地方使用操作员来帮助它.
正如您使用new运算符创建对象一样,您应该在完成对象时删除对象,如下所示:
delete myObjectVariable;JavaScript运行时自动垃圾在其值设置为null时收集对象.但是,将对象设置为null不会从内存中删除引用该对象的变量.使用delete确保除了对象本身使用的内存之外还回收此内存.(如果明确调用delete,也可以更容易地看到分配和解除分配不平衡的位置.)
史蒂夫
嗯,在我看来,你来自于以记忆为中心的语言,并试图将这种逻辑强加到 JS 中。是的,JS 使用内存(当然),但我们有垃圾收集来负责清理所有内存。
如果您想了解内存分配的细节,那么您将不得不四处寻找。但根据经验,当你使用 var、new 或声明一个新函数(或闭包)时,你就会占用内存。您可以将 vars 设置为 null 以将其标记为垃圾回收,并且您也可以使用 delete 关键字,尽管很少有人这样做,除非它们在服务器端工作(就像我使用 ASP JScript 一样),这很重要。
| 归档时间: |
|
| 查看次数: |
15955 次 |
| 最近记录: |