当我创建Click事件对象的新实例时,它返回以下错误。 Click here用于jsfiddle代码。以下是我的代码
var ClickEvent = function (event) {
this.ev = $('.' + event);
this.ev.on('click', this.userInput());
};
ClickEvent.protoype = function () {
return {
userInput: function () {
console.log('user');
},
show: function () {
console.log('show');
}
};
}();
var c = new ClickEvent('event');
c.show();
为什么会显示此错误,我该如何解决?
Uncaught TypeError: Object [object Object] has no method 'userInput'
答案 0 :(得分:3)
有几个问题。
您在prototype
中有拼写错误。
this.ev.on('click', this.userInput());
应为this.ev.on('click', this.userInput);
- 您希望传递对函数的引用,以便在用户单击时执行,您不希望在绑定事件处理程序时调用它。
答案 1 :(得分:2)
你拼写错误prototype
; your code otherwise executes fine,虽然您打算使用this.userInput
引用该方法,而不是立即使用this.userInput()
调用该方法,因此您会收到'show'
和{{1}的消息当页面加载时。
有了这些修补程序,您的代码functions as I expect you intend:'user'
仅在您点击链接时显示。
答案 2 :(得分:0)
错误意味着在javascript库中没有位置,可以找到方法userInput。由于你没有在第3行之前的任何地方引用userInput变量,因此我很有可能告诉你。另外.on()有两个参数:(“EVENT”,“FUNCTION”)。在您的代码中,this.userInput不是一个函数,不能作为一个函数。
答案 3 :(得分:-1)
固定类型,稍有改动,这可行。
function ClickEvent(event) {
this.ev = $('.' + event);
this.ev.on('click', this.userInput());
};
ClickEvent.prototype = {
userInput: function () {
console.log('user');
},
show: function () {
console.log('show');
}
};
var c = new ClickEvent('event');
c.show();