小编den*_*mat的帖子

从模块中的函数内访问模块级变量

我希望能够做到这样的事情:

#mymodule
var = None

def load():
    var = something()
Run Code Online (Sandbox Code Playgroud)

其他模块:

#secondmodule
import mymodule
mymodule.load()

#thirdmodule
from mymodule import var
print var #Shouldn't be None
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从模块中定义的函数引用模块变量.

这可能吗?或者我需要在每个我不想使用它的地方发布全球声明.还是我完全错了?

python

45
推荐指数
2
解决办法
4万
查看次数

使用Jquery导致domManip的Javascript函数指针不是函数错误

JQuery版本

jQuery JavaScript Library v1.4.4

问题

解决方案可能是显而易见的,但我正在摸不着头脑.

问题是在进行一些代码优化时,我遇到了一个循环,它调用了几次jquery元素,这是一个相当大的循环.所以它看起来像这样:

var list_of_goodies = [1,2,3,...];
$.each(list_of_goodies, function(val) {
      $('div.toaddto').append(val);
      ...some more code...
      $('div.toaddto').append(otherval);
});
Run Code Online (Sandbox Code Playgroud)

你可以看到没有真正优化,所以我尝试使用函数指针,所以它看起来像这样:

var list_of_goodies = [1,2,3,...];
var toaddtoAppend = $('div.toaddto').append;
$.each(list_of_goodies, function(val) {
      ... the other code...
      toaddtoAppend(val).append(otherval);
});
Run Code Online (Sandbox Code Playgroud)

它可能看起来不是一个巨大的优化,但它是一个很大的列表,这可以节省大量的查找时间,尤其是在较旧的IE中.然而,这会导致错误.

错误

this.domManip不是一个函数

不幸的是,这是来自缩小的jQuery,所以没有更多的信息,它似乎发生在wrapInner()中.

这是范围问题还是参考问题?我没有使用jQuery测试它,函数指针工作.

$ .each或for循环以相同的结果结束.谁知道我在哪里错了?我对javascript如何处理函数指针知之甚少,特别是当它们应该与某个实例相关联而不仅仅是静态时,所以请原谅任何无知.

浏览器测试

  • Firefox 3.6
  • IE 6,7和8
  • Chrome 9.0.something

无论浏览器的结果总是相同的,这似乎表明它不是浏览器如何处理导致它破坏的指针.

自己测试一下

<html>
   <head>
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
     <script type="text/javascript">   
         $(function(){
            var iterables = [];
            for (var i = 0; i < 1000; i++) iterables.push(i);
            var divAppend …
Run Code Online (Sandbox Code Playgroud)

javascript jquery function-pointers

2
推荐指数
1
解决办法
2079
查看次数

标签 统计

function-pointers ×1

javascript ×1

jquery ×1

python ×1