静态变量一个jQuery插件;怎么创造?

前端之家收集整理的这篇文章主要介绍了静态变量一个jQuery插件;怎么创造?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

为jQuery插件创建静态变量的最佳方法是什么?

到目前为止,我有两个示例用例来说明我的想法;每个人都有一些想法.
当然欢迎任何其他想法……

一个例子是静态变量,包含:动画设置,布局设置,产品细节等;另一个用于静态变量缓存数据.

我希望’静态’是正确的终结点……单个全局变量.如果错了请更正.

案例1:用于设置

  1. // defining globally
  2. var anObject = {
  3. value1 = 0;
  4. value2 = 0;
  5. }
  6. jQuery.anObjectSet(partialObject) {
  7. anObject = jQuery.extend(anObject,partialObject);
  8. }
  9. jQuery.fn.myPlugin = function (partialObject) {
  10. obj = jQuery.extend(anObject,partialObject);
  11. }

或者可能?

  1. // adding to the jQuery object
  2. jQuery.anObject = {
  3. value1 = 0;
  4. value2 = 0;
  5. }
  6. jQuery.anObjectSet(partialObject) {
  7. jQuery.anObject = jQuery.extend(jQuery.anObject,partialObject);
  8. }
  9. jQuery.fn.myPlugin = function (partialObject) {
  10. obj = jQuery.extend(jQuery.anObject,partialObject);
  11. }

或者可能?

  1. jQuery.anObjectSet(partialObject) {
  2. if(!jQuery.anObject)
  3. jQuery.anObject = {
  4. value1 = 0;
  5. value2 = 0;
  6. }
  7. jQuery.anObject = jQuery.extend(jQuery.anObject,partialObject);
  8. }
  9. jQuery.fn.myPlugin = function (partialObject) {
  10. if(!jQuery.anObject)
  11. jQuery.anObject = {
  12. value1 = 0;
  13. value2 = 0;
  14. }
  15. obj = jQuery.extend(jQuery.anObject,partialObject);
  16. }

案例2:用于缓存

  1. jQuery.fn.myPlugin = function (newObject) {
  2. if(!cache[newObject])
  3. cache[newObject] = $(newObject);
  4. return cache[newObject];
  5. }

或者可能? (我在其他地方见过这种方法)

  1. window.$cache = {};
  2. jQuery.fn.myPlugin = function (newObject) {
  3. if(!$cache[newObject])
  4. $cache[newObject] = $(newObject);
  5. return $cache[newObject];
  6. }

谢谢.我想建立一个.js库,开始正确的轨道……

最佳答案
如果您希望单独为库和库创建一个“全局”或静态变量,那么关闭是可行的方法.

普通的全局是一件坏事,因为它污染了命名空间,而你根本不知道谁将运行你的库.

通过在匿名函数中定义静态变量,我们可以自己访问一个没有人可以触及的变量,并且对于我们的函数来说,它实际上是“全局的”.如果我理解你正在尝试做什么,这应该完成它.

  1. (function($){
  2. var $cache = {};
  3. jQuery.fn.myPlugin = function (newObject) {
  4. if(!$cache[newObject])
  5. $cache[newObject] = $(newObject);
  6. return $cache[newObject];
  7. }
  8. })(jQuery);

编辑:

$cache变量只能在此匿名函数中定义的函数中访问.因此,如果其他函数需要访问此文件,则还必须在此匿名函数中定义它们.

在这里定义所有内容的唯一选择(AFAIK)是具有一些访问器函数的组合,这个闭包内部定义的一个简单函数的目的是提供外部函数访问$cache.

最好,我将在这个闭包中定义必要的函数.然而,这最终是一个实施细节,由您自行决定.

猜你在找的jQuery相关文章