相关疑难解决方法(0)

为什么JQuery没有公开其UUID功能?

在底层jQuery使用地图"的UUID"(只是将其作为保持计数器jQuery.uuid)来解决著名的内存泄漏问题浏览器有当您从Javascript的DOM附加属性的标签.代替这样做,JQuery使用它$.data(tag, name, value)来存储从uuid键入的地图中的数据(可以通过检查确定的键tag[jQuery.expando]).

虽然$.data()非常有用,但有时您希望将数据映射到标记而不将数据转储到一个全局存储桶中 - 您需要自己的小数据桶,例如,检查长度或循环.

作为一个人为的例子,假设你有点击时可以旋转通过4种状态之一的图标.当一个处于状态2时,您希望将其添加到状态2中的图标数组.最明显的方法是将标记添加到数组中; 但这样做会造成内存泄漏.你可以调用$.data()复选框,但这并不能完成你想要做的事情 - 你必须遍历所有复选框来检查$.data()它们以找出哪些是和不在列表中.

你需要在数组中存储一些标签的抽象,这就是jQuery的UUID.您可以编写自己的UUID功能,但理想情况下,您只需利用已内置于JQuery的UUID功能,无论是代码大小还是质量原因.您可以要求JQuery通过调用隐式地将UUID附加到标记$.data(tag, 'irrelevant', 1),然后检查tag[jQuery.expando]以获取其UUID,最后在列表中使用它...但这有点像黑客.真正理想的是在公共API中公开以下内容:

$.getUuid(tag):检查并创建一个UUID(如果不存在) - 理想情况下,该方法是从中分解的,$.data()并为传入的标记创建或获取uuid.

那么,有没有一个原因在jQuery中没有考虑到它自己的方法?这在某种程度上有害吗?它只是从来没有看似有用的东西吗?

我应该注意到,我实际上已经在我们正在使用的jQuery版本中考虑了它,并且它非常有用.但也许存在潜在的风险,我没有打算使用它.我也知道一个插件可以实现这一点,但它有点破碎 - 并且有两个代码路径来执行相同的UUID功能既有点浪费又有点脆弱.

jquery uuid expando

6
推荐指数
1
解决办法
3074
查看次数

标签 统计

expando ×1

jquery ×1

uuid ×1