为什么没有用于cookie的内置JS函数
Why are there no builtin JS functions for cookies?
好吧,这个问题听起来可能很荒谬,但为什么没有通过JS修改cookie的实现呢。我之所以这么问,是因为在网络上,我看到了一些非常可怕的操作cookie的实现。
另外,为什么cookie不表示为Object?在我看来,如果cookie被表示为一个对象,那么操作它会容易得多。那么document.cookie可以只是对象的字符串表示。
document.cookie
,即使听起来像是一个简单的属性,实际上也隐藏了函数访问(getter和setter)。
为什么cookie不是一个完整的结构化对象?我想原因是:
- 与localStorage相同:强制只设置非常轻的数据,以避免饼干在磁盘上很重
- 服务器、客户端和两者之间的标准用法(即传输)
- 简单的规范化过程
回复评论:
- 我不认为这是对的:我看到了一些原因
- 我认为localStorage API是逻辑上的继任者,稍微好一点(仍然不完美)
document.cookie
就是这样,因为它最初就是这样实现的。我知道,这是一个糟糕的原因,但你必须记住早期网络的历史。第一个实现新功能的浏览器为所有其他浏览器的复制设置了标准。
这与JavaScript中的null == undefined
完全相同。旧的bug会成为必需的实现细节,我们将永远使用它,或者直到下周,这取决于谁在积极地研究w3规范。
为什么没有通过JS修改cookie的实现?
因为它不会向后兼容。显然,我们无法更改现有的实现,所以我们必须创建一个新的实现。在创建一个新的浏览器时,我们希望创建一个可以由现有JS代码合理复制的浏览器,以回填旧浏览器,但如果我们必须添加polyfill才能使其正常工作,为什么还要在浏览器中添加新功能呢?
所以,我们再也看不到比这更好的饼干了,对吧?
错误。浏览器正在添加一个新的对象实现来本地存储数据,它被称为localStorage
,并且可以在需要的地方通过cookie合理地复制它。这也允许我们将本地信息与服务器信息分离(服务器可以为仅服务器的cookie设置仅在cookie上的HTTP)。
- jQuery中是否内置了任何字符串格式化函数
- 复选框与文本内联-JS问题
- 为什么可以't我访问Chrome内置功能$
- 建议将包含不同参数的内联JS转换为外部脚本
- 正在寻找一种跨移动浏览器兼容的方式,通过内置麦克风进行录制
- 使用angularjs内置过滤器过滤代码中的特定属性
- 为什么没有用于cookie的内置JS函数
- 如何在 Node.js 目录下查找内置模块
- 无法应用日期过滤器内置的angular js
- 如何使用C++插件中内置的模块中的node.js
- Node.js/JavaScript内置类型的存根
- WebStorm内置web服务器会为index.html中包含的每个css和js文件获得404
- 如何在测试期间存根node.js内置的fs
- JS OOP内置对象数组
- 有安卓内置浏览器开发者指南吗?在哪里查找JS引擎的差异
- 检查JS中的内置方法是否被调用
- 在Node.js中查找内置对象和函数
- NVD3.js是否包含一个内置选项来设置每个y轴的颜色?
- Vue.js是否有一种内置的方式来将持久对象的副本添加到重复数组中?
- 使用内置二维数组的拉斐尔.js柱状图绘制失败