为什么没有用于cookie的内置JS函数?

时间:2012-08-23 17:42:19

标签: javascript cookies

好的,这个问题可能听起来很荒谬,但为什么没有通过JS修改cookie的实现。我问这个是因为在网络上,我看到了一些操作cookie的非常糟糕的实现。

另外,为什么cookie没有表示为对象?在我看来,如果将cookie表示为一个对象,那么操作它会容易得多。然后document.cookie可以只是对象的字符串表示。

2 个答案:

答案 0 :(得分:1)

document.cookie,即使它听起来像一个简单的属性,实际上隐藏了函数访问(getter和setter)。

为什么cookie不是一个完整的结构化对象?我想原因是:

  • 与localStorage相同:强制您只设置非常轻的数据,以便不进行 饼干沉重在磁盘上
  • 服务器,客户端和中间(即传输)的标准用法
  • 简易规范化过程......

回答评论:

  • 我不是说它是对的:我看到了一些原因
  • 我认为localStorage API是合乎逻辑的继承者,好一点(仍然不完美)

答案 1 :(得分:1)

document.cookie就是这样,因为这是它首次实现的方式。我知道,这是一个废话,但你必须记住早期网络的历史。第一个实现新功能的浏览器为所有其他要复制的浏览器设置了标准。

这与JavaScript中的null == undefined完全相同。旧的bug成为必需的实现细节,我们将永远坚持下去,或者直到下周,这取决于谁正在积极研究w3规范。

  

为什么没有通过JS修改cookie的实现?

因为它不会向后兼容。显然我们无法改变现有的实现,所以我们必须创建一个新的实现。在创建一个新的,我们想要创建一个可以通过现有的JS代码合理地复制以回填旧浏览器,但如果我们必须添加一个polyfill来使其工作,为什么还要加入新的功能到浏览器?

那么,我们永远不会看到更好的饼干吗?

<强>错即可。浏览器 添加一个新的对象实现来在本地存储数据,它被称为localStorage,它可以通过cookie在需要的地方合理地复制。这也允许我们将本地信息与服务器信息分开(服务器只能在仅为服务器cookie的cookie上设置HTTP)。