好的,这个问题可能听起来很荒谬,但为什么没有通过JS修改cookie的实现。我问这个是因为在网络上,我看到了一些操作cookie的非常糟糕的实现。
另外,为什么cookie没有表示为对象?在我看来,如果将cookie表示为一个对象,那么操作它会容易得多。然后document.cookie可以只是对象的字符串表示。
答案 0 :(得分:1)
document.cookie
,即使它听起来像一个简单的属性,实际上隐藏了函数访问(getter和setter)。
为什么cookie不是一个完整的结构化对象?我想原因是:
回答评论:
答案 1 :(得分:1)
document.cookie
就是这样,因为这是它首次实现的方式。我知道,这是一个废话,但你必须记住早期网络的历史。第一个实现新功能的浏览器为所有其他要复制的浏览器设置了标准。
这与JavaScript中的null == undefined
完全相同。旧的bug成为必需的实现细节,我们将永远坚持下去,或者直到下周,这取决于谁正在积极研究w3规范。
为什么没有通过JS修改cookie的实现?
因为它不会向后兼容。显然我们无法改变现有的实现,所以我们必须创建一个新的实现。在创建一个新的,我们想要创建一个可以通过现有的JS代码合理地复制以回填旧浏览器,但如果我们必须添加一个polyfill来使其工作,为什么还要加入新的功能到浏览器?
那么,我们永远不会看到更好的饼干吗?
<强>错即可。浏览器 添加一个新的对象实现来在本地存储数据,它被称为localStorage
,它可以通过cookie在需要的地方合理地复制。这也允许我们将本地信息与服务器信息分开(服务器只能在仅为服务器cookie的cookie上设置HTTP)。