首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将参数传递给匿名Javascript函数?

如何将参数传递给匿名Javascript函数?
EN

Stack Overflow用户
提问于 2009-12-16 08:34:46
回答 6查看 576关注 0票数 1

我正在写一个简单的计数器,我想让这个计数器的安装非常简单的用户。我见过的最简单的计数器代码之一(对于安装它的用户)是Google Analytics code

因此,我想将主要代码存储在一个文件中,安装我的计数器的用户只需像这样设置websiteID:

代码语言:javascript
复制
<html><head><title></title></head><body>
<script type="text/javascript" src="http://counterhost.lan/tm.js">
var websiteId = 'XXXXX';
</script>
</body></html>

下面是我的代码:

代码语言:javascript
复制
<script type="text/javascript" src="http://counterhost.lan/tm.js">
var page = _gat.init('new');
</script>

这是我的JS文件:

代码语言:javascript
复制
(function() {
    var z = '_gat';
    var aa = function init(data) { alert(data); alert(z);};

    function na() {
        return new z.aa();
    }
    na();
})();

我试着理解Google Analytics的javascript代码,但我做不到。有人能建议我如何在标签之间指定变量,然后在位于javascript文件中的匿名函数中读取它吗?谢谢。

EN

Stack Overflow用户

发布于 2009-12-16 09:18:47

我认为您对JS对象是如何调用的感到有点困惑。

z是一个字符串,'_gat'。因为字符串没有名为aa的成员,所以不能对其调用aa()aa是存储在局部变量中的独立函数。即使您调用了aa(),它也不会返回任何内容,因此对其结果使用new运算符是没有意义的。new只能在构造函数上调用。

我猜你的意思是这样的:

代码语言:javascript
复制
var _gat= function() {

    // Private variable
    //
    var data= null;

    // Object to put in window._gat
    //
    return {

        // Set the private variable 
        //
        init: function(d) {
            data= d;
        }
    };
}();

然后,调用第二个示例中的_gat.init('foo')会将该变量设置为网站ID 'foo'。这是因为_gat对象是定义在匿名函数中的返回{init: function() {...}}对象,在隐藏的data变量上保留一个引用(“闭包”)。

票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1911511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档