Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
面向对象,javascript中的继承无法调用外部方法_Javascript_Oop_Refactoring - Fatal编程技术网

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

面向对象,javascript中的继承无法调用外部方法,javascript,oop,refactoring,Javascript,Oop,Refactoring,我想将我的工作代码重构成一个结构更好的javascript。此时此刻,我有这样的想法: function Search(){ addNode = function(nodeToAdd){ //do something } function update(){ var node = aKindOfObjectFromSomeLibrary; node.on('click', function(d){ $

我想将我的工作代码重构成一个结构更好的javascript。此时此刻,我有这样的想法:

function Search(){
    addNode = function(nodeToAdd){
        //do something
    }
    function update(){
        var node = aKindOfObjectFromSomeLibrary;
        node.on('click', function(d){
            $.each(someArray, function(i){
                addNode(this);
            }
        }
    }
}
var s = new Search();
s.addNode(nodeToAdd);
目标是使用it方法创建一个搜索对象,该方法甚至可以在外部使用,如下所示:

function Search(){
    addNode = function(nodeToAdd){
        //do something
    }
    function update(){
        var node = aKindOfObjectFromSomeLibrary;
        node.on('click', function(d){
            $.each(someArray, function(i){
                addNode(this);
            }
        }
    }
}
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吗

var scope = this 我也指的是stackoverflow中的问答:


不同的是,到目前为止,我不必对我的对象进行子类化(这就是我尝试(function(){})()闭包结构的原因。

Zio,尝试这样的结构

(function(){})();
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);

齐奥,试着这样组织

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);

搜索只是对象的名称,而不是一个本身将搜索某些内容的函数…该对象还将包含其他字段和许多其他方法,我认为util是“静态的”类不是我所需要的。搜索只是对象的名称,而不是一个本身将搜索某些内容的函数…该对象还将包含其他字段和许多其他方法,我认为util是“静态的”类不是我需要的。搜索只是对象的名称,而不是一个本身将搜索某些内容的函数…该对象还将包含其他字段和许多其他方法,我认为util“static”类不是我需要的。