我想将我的工作代码重构为更好的结构化javascript。此刻我有这样的事情:
function Search(){
addNode = function(nodeToAdd){
//do something
}
function update(){
var node = aKindOfObjectFromSomeLibrary;
node.on('click', function(d){
$.each(someArray, function(i){
addNode(this);
}
}
}
}
目标是用它创建一个Search对象,即使在外面也可以使用它:
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的唯一方法?
我也指的是stackoverflow中的这个Q& A: How to "properly" create a custom object in JavaScript?
不同的是,到目前为止,我不必为我的对象创建子类(这就是我尝试
(function(){})();闭包结构的原因。
答案 0 :(得分:0)
Zio,尝试以这种方式构建
util.Search(nodetoadd);
当你想要调用你所做的功能时:
var util = {
addNode : function(node) {
// do something
}
但我建议不要创建只调用另一个函数(addNode)的函数搜索
只是做:
util.addNode(nodetoadd);
并称之为:
print "To Calculate the cost of your trip,"
print "enter the miles driven or enter zero to quit"
getMiles = float(raw_input ('Enter Miles: '))
while getMiles != 0:
fuelEcon = getMiles / 20
fuelCost = float(input ('Enter Cost of Fuel: $'))
costOfTrip = getMiles * fuelCost
fuelIncrease = (fuelCost * .1) + fuelCost
futureTrip = getMiles * fuelIncrease
print "Cost of Trip: $", costOfTrip
print "Cost of Trip With 10% Increase in Fuel Cost: $", futureTrip
getMiles = float(raw_input ('Enter Miles: '))
print "END OF PROGRAM"
# should be no need for exit() unless code is included in a subroutine