$ .plugin.function和jquery中的作用域?

时间:2011-08-04 07:46:25

标签: javascript jquery

我是一个php家伙,现在我正在学习制作我的第一个插件

接下来是什么,

$.plugin.method({ 
    test: 'helloworld'
});

$.plugin.method({ 
    test: 'another helloworld'
})  

继承我的职能还是上课?

// class ?
jquery.plugin = function(){
    // variables
    var test = [];

    // function ?
    var method = function(params){
        test[] = params['test']
    }
    console.log(test)
}

我期待什么

test = ['helloworld','another helloworld']

我们可以在javascript中这样做吗?我做对了吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

在您的示例中,您使plugin成为函数,但在第一个代码段中,您调用了$.plugin.method()而不是$.plugin()

您必须使用plugin属性method 对象

(function($) {

    // variables
    var test = [];

    $.plugin = {
        method: function(params){
            test.push(params['test']);
            console.log(test)
        }
    }

}(jQuery));

立即函数确保test仅对$.plugin本身可见。您无法从外部访问它。如果你想这样做,你必须使它成为$.plugin

的属性
$.plugin = {
    test: [],
    method: function(params){
        this.test.push(params['test']);
        console.log(test)
    }
}

我建议您先阅读JavaScript guide [MDN guide],了解有关functions [MDN guide]objects [MDN guide]的基础知识。

答案 1 :(得分:1)

什么是$ .plugin?我不知道你想要什么,所以这里什么都没有:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$.plugin = {
    // Variable
    test: [],

    // Function
    method: function(params) {
        this.test.push(params['test']);
    }
};

$.plugin.method({
    test: 'helloworld'
});

$.plugin.method({
    test: 'another helloworld'
});

alert($.plugin.test);
</script>