更改私有类方法

时间:2014-12-13 01:18:09

标签: javascript

我试图在不实际更改源的情况下更改jquery插件的行为。出于这个问题的目的,我构建了一个简单的例子来说明我的问题。如果有脚本文件将类实例生成器附加到全局变量,如下所示:

(function(){

window.newMyClass = function(){
    return new myclass();
}

function myclass(){
    var privateMethod = function(){
        return "private";
    }
    this.publicMethod = function(){
        return privateMethod();
    }
}
})()

如果我随后使用var instance = window.newMyClass()获取myclass的新实例,有没有办法覆盖privateMethod instanceinstance.publicMethod()的行为,这样{{1}}会调用我的重写功能?我以为我可以继承myclass,但由于myclass构造函数的作用域是立即调用的函数表达式,我不知道如何做到这一点。

更改插件源是否更好?问题是我必须自己托管它而不是使用CDN,并且每次发布更新时都要重新实现更改。

1 个答案:

答案 0 :(得分:0)

我不知道我是否理解这一点。可能不是,因为没有与之相提并论:

(function(){

window.newMyClass = function(){
    return new myclass()
}

function myclass(){
    var privateMethod = function(){
        return "private";
    }
    this.publicMethod = function(){
        return privateMethod();
    }
}
})();

var instance = window.newMyClass();

instance.publicMethod = function(){
        return "new method";
}

console.log(instance.publicMethod());

FIDDLE:http://jsfiddle.net/r9evbzd2/1/