【问题标题】:How do I make an ArrayBuffer immutable in Javascript?如何在 Javascript 中使 ArrayBuffer 不可变?
【发布时间】:2018-01-20 19:42:10
【问题描述】:

如何在 JavaScript 中使 ArrayBuffer 的内容不可变? Object.freeze() 方法似乎不起作用。有什么方法可以实现吗?有可能吗?

【问题讨论】:

  • 已经是developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… "你不能直接操作 ArrayBuffer 的内容"
  • 你想达到什么目的?
  • @RobbieMilejczak 对不起,我已经知道了。我在这个问题中要问的是,防止ArrayBuffer 通过Views(例如Typed arrays 和@987654325)被操纵的方法@s。这样我就可以用它的初始数据填充ArrayBuffer,然后冻结它。
  • @guest271314 我试图阻止ArrayBufferViews 操纵。
  • 嘘,好吧,你没说那个芽

标签: javascript


【解决方案1】:

您可以将ArrayBuffer 转换为不可变字符串,如使用const 定义的data URI

const reader = new FileReader;

reader.onload = () => { const ab = reader.result // `ab` cannot be changed }

reader.readAsDataURL(new ArrayBuffer(123));

看到Is it possible to delete a variable declared using const?

【讨论】:

  • 哦,一个不可变复印机解决方案。原来的ArrayBuffer 将无法再访问,只有不可变对象将其克隆出来。看起来不错,但为什么要删除Promise.resolve() 解决方案?
  • Promise.resolve() 方法需要调整。 ArrayBuffer 是如何声明的?
  • 首先更正:“你为什么*删除”。 -- ArrayBuffer 可以以任何方式声明(创建)。
  • 链接的答案描述了为什么不能用delete 删除const let 声明。如果ArrayBuffer 未使用constlet 声明,您可以尝试delete 变量。否则,使用字符串方法
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
相关资源
最近更新 更多