JavaScript向对象添加方法

时间:2015-04-23 18:23:51

标签: javascript jquery object prototype extends

我正在尝试扩展jQuery对象,但这样做有些困难。

$(document).ready(function() {
    $('.single-item').slick({
        dots: true,
        infinite: false,
        speed: 500,
        customPaging: function(slider, i) {
            // Theres a lot of stuff in this, removed for brevity
        },
        progressBar: function(slider, i) {
            // Want to create this method
            // alert is not defined
            window.onload(window.alert("YES"));
        }
    });
    // slick is not defined
    console.log(typeof(slick));
});

我正在尝试很多东西,例如使用jQuery的“extend”:

var progressBar = function(slider, i) {
    window.onload(window.alert("YES"));
};
$.extend(slick, progressBar);
// Also tried '.slick-slider' in place of slick

也尝试实施:

$.fn.progressBar = function(i) { 
    window.onload(alert(this.i))
};

$('.single-item').progressBar(i);

“customPaging”存在于主js文件中,我不想改变它 - 而是将其他方法扩展到该对象。它以“slider”和“i”作为参数。由于它已存在于主js文件中,因此很容易操作它。

但是,我想创建一个名为“progressBar”的全新方法,该方法还可以访问对象的“slider”和“i”变量。

任何人都可以帮助我了解正在发生的事情,并演示如何像我想要的那样创建方法“progressBar”吗?

1 个答案:

答案 0 :(得分:0)

它不起作用,因为你将方法添加到某个插件的配置对象,而不是扩展jquery元素。如果你想为插件添加新方法,你可能需要编辑它的代码。