如果我有一个像这样的jquery命名空间:
var sc = {
calcResult: function(){
//do stuff
},
initialise: function () {
$('#myid').click(function(){
//would like to call calcResult() here
}
}
如何在初始化函数中调用calcResult?我尝试了this.calcResult()
和sc.calcResult()
,但都抱怨未定义的错误。
答案 0 :(得分:1)
您是否也在某处调用"replica:0"
绑定sc.initialise()
事件处理程序?在下面的代码段中,它适用于click
sc.calcResult()

var sc = {
calcResult: function() {
//do stuff
alert("Do stuff");
},
initialise: function() {
$('#myid').click(function() {
//would like to call calcResult() here
sc.calcResult();
});
}
}
sc.initialise();

答案 1 :(得分:1)
sc
对象看起来像一个独立的对象(calcResult
属于该特定对象,而不属于某些特定的构造函数原型)。因此,您需要指向sc
对象本身,以便可以使用calcResult
(函数)属性。然后,您有两个选择:
在initialise
函数范围:
initialise: function () {
var that = this;
$('#myid').click(function(){
// "that" variable points to the right reference
// the object that sc points to
that.calcResult()
});
}
您也可以直接使用sc
变量
var sc = {
calcResult: function(){
},
initialise: function () {
$('#myid').click(function(){
sc.calcResult()
});
}
};
但是,根据您尝试实现的目标,您可能更喜欢一种解决方案而不是另一种解决方案。
如果你有像sc
这样的类似对象具有与直接属性相同的功能,你应该创建一个构造函数,以便属性函数属于构造函数原型,而不是将每个函数复制到每个特定的“实例”对象上。