面向对象,继承 javascript 无法调用外部方法

Object Oriented, inheritance in javascript unable to call external methods

我想将我的工作代码重构为结构更好的 javascript。此刻我有这样的事情:

function Search(){
    addNode = function(nodeToAdd){
        //do something
    }
    function update(){
        var node = aKindOfObjectFromSomeLibrary;
        node.on('click', function(d){
            $.each(someArray, function(i){
                addNode(this);
            }
        }
    }
}

objective就是用它的方法创建一个搜索对象,即使在外面也可以像这样使用:

var s = new Search();
s.addNode(nodeToAdd);

我正在考虑这样做:

function Search(){
    this.addNode = function(nodeToAdd){}
}

但是在嵌套的泛型函数中将无法访问函数 addNode。

我正在研究的另一种方法是使用这种结构:

(function(){
    var object = {
        var field = itsValue,
        addNode : function(){}
    };
)();

当然,在嵌套结构中调用方法的问题仍然存在。

能否请您指导我重构代码的正确方法,是在嵌套函数中传递

var scope = this
的唯一方法吗?

我也在 Whosebug 中提到了这个问答: How to "properly" create a custom object in JavaScript?

不同的是,到目前为止,我不必对我的对象进行子类化(这就是我尝试

(function(){})();
闭包结构的原因。

Zio,尝试这样构建

var util = {

Search : function(node) {
        this.addNode(node);
    },



   addNode : function(node) {

    // do something

}

当您想调用函数时:

util.Search(nodetoadd);

但我建议不要创建仅调用另一个函数 (addNode) 的函数搜索

就做:

var util = {

   addNode : function(node) {

        // do something

    }

并称它为:

util.addNode(nodetoadd);