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

标签 javascript memory-corruption

我正在开发一个应用程序,它使用 TinyMCE 编辑器来允许用户修改内容。我开发了一个 Prototype.js 类,它在初始化时生成一个唯一的 ID 并在 <div> 上创建一个 TinyMCE 编辑器用那个ID。下面是一些相关代码:

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。我会经常这样做:

var index = Region.instances.invoke('uid').indexOf(uid);

找到实际的Region反射(reflect)事件发生的接口(interface)的实例。

我只设置了 _uid任何给定的属性Region一次。我对此很确定。

但在 Firefox 9.0.1 中,我看到了非常奇怪的行为。当事件触发时,无法找到它们触发的编辑器,因为 index上面代码中的是-1 .在 Firebug 中检查后,我看到了这个:

Screen Capture of odd behavior

这些是来 self 的代码的调试消息,记录了各种内容(在本例中为区域的高度)以及该区域的 this.uid()值(value)。 内存似乎已损坏!您甚至可以看到它发生的位置,第一个带圆圈的日志条目是正确的,而随后的错误。

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

为了进一步检查,我在 Firebug 控制台中运行了这个:

>>> com.digitalfruition.Customizer.TypeRegion.instances.invoke('uid');
["�ᔮ��蒦ᓤ�瀀魳ᓪ�倀⛺ᓪ�怀�eg����遀"]

这对我来说毫无意义。在 JavaScript 中,什么会导致像这样的内存损坏?我该如何解决这种情况?

最佳答案

是否有可能您的某个文件使用不同的编码保存?我会看一下,也许还可以确保您使用正确的编码和 mime 类型提供文件。

最好在 console.log() 生成 uid 值时进行一些测试,以确认损坏确实发生创建对象后。我怀疑它们是在创建时发生的。

关于javascript - 什么可能导致 JavaScript 中的内存损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8996716/

相关文章:

php - 每个周期索引一个数组(以秒为单位)

javascript - data-step 属性在 jquery 旋钮中不起作用

java - JNA - C 内存错误导致 Java 程序崩溃

c# - Clipboard.Clear() 使 Outlook 和 Visual Studio 崩溃

ruby-on-rails - 在 ruby​​ 1.9.3 上运行 rails 时出现段错误

javascript - 我应该如何加载 deeplearn js?

javascript - 科尼后台服务

javascript - ExtJS 从 Controller 刷新 View

c - void 指针和 ffcall 库

c++ - 如何记录特定内存位置何时被写入以及由哪个函数写入?