Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

ES5破坏性的操作缺少事务回滚机制

  根据ES5.1中对shift的定义,遇到不可删除的元素时应该抛出异常。抛出异常这个行为我很赞同,但也不能因此弄脏数据呀!我觉得ES5.1的定义中对那些具有破坏性的操作缺个事务回滚的机制,导致了抛出异常时我们无法确定数组内的数据变化。
<script>
var a=["A","B","C","D","E"];
Object.defineProperty(a,5,{value:"F"});
try{a.shift();}catch(e){};
console.log(a);
</script>

  虽然v8中直接丢弃元素configuration的行为是残暴至极不可原谅的!但它也因此省去了许多麻烦。而按照ECMAScript来实现的Firefox就存在这个问题。shift只是一个最简单的例子,unshift、splice、sort、reverse,这些都是同样具有破坏性的方法。这些内部方法从外部看来应该是一个黑盒子,调用它们不应该出现成功一半的情况,所以我觉得很有必要为它们提供事务回滚机制。
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^