我有一个对象,我创建了两个实例:
var generalGraph = new graph(generalFunnel)
generalGraph.draw("#conversion");
var invoicingGraph = new graph(invoicingFunnel)
invoicingGraph.draw("#invoicing")
这是对象(请注意,这是高度简化的,以便更容易理解)注释是控制台输出。
graph = function(funnel){
this.funnel = funnel.conversions
mySelf = this
this.draw = function(selector){
console.log(mySelf.funnel)
//generalGraph ["Användare", "Påbörjat Onboarding", "Skapat oganisation", "Skapat användare", "Kom tillbaka", "Köpt"]
//invoicingGraph ["Användare", "Påbörjat Onboarding", "Skapat oganisation", "Kom tillbaka", "Köpt"]
nv.addGraph(function() {
console.log(mySelf.funnel)
//generalGraph ["Användare", "Påbörjat Onboarding", "Skapat oganisation", "Kom tillbaka", "Köpt"]
//invoicingGraph ["Användare", "Påbörjat Onboarding", "Skapat oganisation", "Kom tillbaka", "Köpt"]
});
}
}
出于某种原因,当我generalGraph.draw
时,它会使用来自invoicingFunnel
的渠道。为什么?我怎么能阻止它发生呢?
答案 0 :(得分:4)
mySelf
是一个全局变量,您之前错过了var
。因此,您的graph
个实例都使用相同的mySelf值。
变化:
mySelf = this
要
var mySelf = this
有关使用和省略var之间的差异,请参阅this question。
您可以使用strict mode来防止这些错误,the complicated rules会为您发现这些错误。
var
关键字定义。