面向对象,继承 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);
我想将我的工作代码重构为结构更好的 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);