面向对象,javascript中的继承无法调用外部方法
我想将我的工作代码重构成一个结构更好的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){ $
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”类不是我需要的。