首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么可能导致JavaScript中的内存损坏?

什么可能导致JavaScript中的内存损坏?
EN

Stack Overflow用户
提问于 2012-01-25 09:14:15
回答 1查看 907关注 0票数 16

我正在开发一个应用程序,它使用TinyMCE编辑器,以允许用户修改内容。我已经开发了一个Prototype.js类,它在初始化时生成一个唯一的ID,并使用该ID在<div>上创建一个TinyMCE编辑器。

代码语言:javascript
复制
Region = Class.create(
{
  initialize: function(options)
  {
    this._editorReady = false;
    this._index = Region.nextIndex++;
    this._uid = com.digitalfruition.Customizer.TypeRegion.uidPrefix+this._index;
    Region.instances.push(this);
    this.setupTinyMCE();
  },

  uid: function()
  {
    return this._uid;
  },

  index: function()
  {
    return this._index;
  },

在很多地方,我会引用Regionuid(),例如,当TinyMCE编辑器中发生事件(例如,选择发生变化)时,我的处理程序会被赋予编辑器的ID。我通常会这样做:

代码语言:javascript
复制
var index = Region.instances.invoke('uid').indexOf(uid);

查找反映发生事件的接口的实际Region实例。

对于任何给定的_uid Region 属性,我只设置过一次。这一点我很确定。

但在Firefox 9.0.1中,我看到了非常奇怪的行为。当事件触发时,将找不到它们触发的编辑器,因为上面代码中的index-1。在Firebug中检查后,我看到了以下内容:

这些是来自我的代码的调试消息,记录各种内容(在本例中是区域的高度)以及区域的this.uid()值。内存似乎已经损坏了!,你甚至可以看到它发生在哪里,第一个圈出的日志条目是正确的,后面的是错误的。

同样的代码在Safari和Chrome中运行良好。到目前为止,似乎只有Firefox 9.0.1受到影响。

为了进一步检查,我在Firebug控制台中运行了以下命令:

代码语言:javascript
复制
>>> com.digitalfruition.Customizer.TypeRegion.instances.invoke('uid');
["�ᔮ��蒦ᓤ�瀀魳ᓪ�倀⛺ᓪ�怀�eg����遀"]

这对我来说没有任何意义。在JavaScript中,是什么导致了像这样的内存损坏?我该如何对这种情况进行故障排除?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8996716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档