自我如何在对象内部更新
How come self gets updated inside object?
我有一个对象,我创建了两个实例:
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
的漏斗。为什么?我怎样才能阻止它发生?
mySelf
是一个全局变量,你缺少它前面的var
。因此,您的两个graph
实例都使用相同的 mySelf 值。
改变:
mySelf = this
自
var mySelf = this
请参阅此问题,了解使用和省略变量之间的区别。
您可以通过使用严格模式来防止将来出现这些错误,该模式将为您发现这些错误。
- 在 JavaScript 中省略分号是可能的,但由于它涉及复杂的规则,因此被认为非常危险。今天这样做通常不受欢迎。
- 同样 - JS中的构造函数名称通常以大写字母开头。您的构造函数可能也应该使用
var
关键字定义。
相关文章:
- 正在更新mongod中两个对象内部的数组
- 如何在更新面板内部调用/触发javascript函数<触发器>标签
- 如何更新按钮内部的文本,每行重复一次
- 从 AngularJS 中的 ngview 内部的视图更新主页
- NodeJS如何更新内部元素
- 控制器内部的scope函数不根据视图中的ng模型更新值
- 用jQuery.html更新span内部html在IE中不起作用
- 如果正在创建或更新项目,请在模型“validate”内部进行区分
- 如何在Mongoose中从多个数组更新数组内部的值
- 自我如何在对象内部更新
- 从 iFrame 内部更新 URL
- AngularJS暂停$watch以进行内部更新
- 从html页面内部更新父变量
- 远程MVC和knockout在内部更新值
- 在指令控制器内部更新作用域
- MVC ajax从内部更新部分结果
- 从另一个控制器内部更新模型
- 如何从resolve方法内部更新作用域
- 无法在函数内部更新全局变量并在函数外部调用它(jQuery)
- 在内部更新$scope.然后