Javascript函数调用语法

时间:2014-07-29 14:38:25

标签: javascript jquery syntax javascript-objects

(function($,window,undefined) {

    $.fn.simplyScroll = function(options) {
        return this.each(function() {
            new $.simplyScroll(this,options);
        });
    };

    var defaults = {
        customClass: 'simply-scroll',
        frameRate: 30, //No of movements per second
        speed: 2, //No of pixels per frame
        orientation: 'horizontal', //'horizontal or 'vertical' - not to be confused with device orientation
        auto: true,
        autoMode: 'loop', //auto = true, 'loop' or 'bounce',
        manualMode: 'end', //auto = false, 'loop' or 'end'
        direction: 'forwards', //'forwards' or 'backwards'.
        pauseOnHover: false, //autoMode = loop|bounce only
        pauseOnTouch: true, //" touch device only
        pauseButton: false, //" generates an extra element to allow manual pausing 
        startOnLoad: false //use this to delay starting of plugin until all page assets have loaded
    };

嗨,我对javascript和语法很新,特别是功能明智。当它包含在像这样的函数中时,如何在默认对象中获取auto的值?

我知道自动将只是defaults.auto,但由于该函数未命名,我不知道如何进入它。我打算稍后在外部javascript文件中更改值。

2 个答案:

答案 0 :(得分:1)

如果您的代码在函数之外,则无法获取此值,除非此函数将对象存储在可通过全局变量到达的defaults变量的某个位置。这是由于JavaScript函数的工作方式 - 函数外部的代码对该函数的局部变量无访问。 (这与其他编程语言没有太大区别。)

如果您的目标只是更改值而不是获取默认值,那么大多数jQuery插件都允许您传入一个对象,其属性将覆盖默认设置。根据插件的名称,你可以这样做:

$("#something").simplyScroll({
    auto: false
});

答案 1 :(得分:0)

在我看来,有两种方法可以让你访问这个功能范围之外的defaults对象

1。在功能范围内,defaults对象将被分配给全局对象(=窗口)

...
// In the function scope
window.defobject = defaults;
...

例如:

(function($, window, undefined) {
    var defaults = {
        foo : "bar"
    };

    window.defobject = defaults;
})(jQuery, this);

console.print(defobject); // This is valid with no error

2. 该函数最终将此对象作为输出

返回
...
// In the function scope
return defaults;

例如:

var defobject = (function($, window, undefined) {
    var defaults = {
        foo : "bar"
    };

    return defaults;
})(jQuery, this);

console.print(defobject); // This is also valid with no error