这是我的JS的简化版本:
var myObject = function() {
return {
functionOne: function() {
//some other logic here
},
functionTwo: function() {
var self = this;
//some logic here
//then call functionOne
self.functionOne();
}
};
}
然后我在html的主体中有这个:
<a href="#" onclick="myObject.functionTwo()">click me</a>
为什么我会收到错误 Uncaught TypeError:当我点击链接时,对象[某个网址]没有方法'functionOne'?
答案 0 :(得分:1)
您的myObject
是函数,需要调用才能获取该对象
<a href="#" onclick="myObject().functionTwo()">click me</a>
为什么不将myObject
定义为对象:
var myObject = {
functionOne: function() {
//some other logic here
},
functionTwo: function() {
var self = this;
//some logic here
//then call functionOne
self.functionOne();
}
};
答案 1 :(得分:1)
您看到的错误并未反映您显示的示例代码。
那就是说,在您使用代码的方式中,您应该能够将其简化为:
var myObject = {
functionOne: function() {
},
functionTwo: function() {
this.functionOne();
}
}
答案 2 :(得分:0)
您需要的是立即执行您的功能。除此之外,您对 self 变量的声明使我认为您正在尝试创建一个闭包,以便您可以从functionTwo访问functionOne。如果是这种情况,那么我认为以下是你所追求的:
var myObject = (function() {
function func1( ) {
}
function func2( ) {
func1();
}
return {
functionOne: func1,
functionTwo: func2
};
}());