js代码在创建对象的新实例后显示错误
js code shows error after creating new instance of object
当我创建ClickEvent对象的新实例时,它返回以下错误。点击这里获取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'
有几个问题。
-
您在
prototype
中有一个打字错误。 -
this.ev.on('click', this.userInput());
应该是this.ev.on('click', this.userInput);
——您希望传递对函数的引用,以便在用户单击时执行它,而不希望在绑定事件处理程序时调用它。
您拼写prototype
错误;您的代码在其他方面执行得很好,尽管您打算用this.userInput
引用该方法,而不是立即用this.userInput()
调用它,因此,当页面加载时,您会同时得到消息'show'
和'user'
。
有了这些修复程序,您的代码将按我所期望的那样运行:'user'
只有在您单击链接时才会出现。
该错误意味着在javascript库的任何位置都找不到方法userInput。我可以说这很可能是因为您在第3行之前的任何地方都没有引用userInput变量。.on()还有两个参数:("EVENT","FUNCTION")。在您的代码中,this.userInput不是一个函数,也不能作为一个函数。
固定类型,只需稍作更改即可。
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();
相关文章:
- 显示模块模式在Knockout中设置模型的新实例
- 尝试使用多个Twenty20实例,但有些实例的高度返回为0,并且不显示
- 突出显示所选文本并同时获取实例
- 使用模型创建实例显示'不是函数'(节点使用猫鼬)
- 在canjs中,根据任何模型实例的存在,有条件地显示胡子模板部分的最常用方法是什么
- 删除数据网格 (Dojo) 和表 (数据网格) 的实例正确显示
- 节点检查器/Chrome 实例不显示源文件、调用堆栈、任何内容
- 无法在单个 HTML 页面上显示 Java/CSS 图像库的多个实例
- 是否可以在实例化的街景全景中显示叠加层/标记
- Javascript 实例变量显示为未定义
- 角度自定义指令基本输入过滤器工作不正常,只显示匹配的第一个实例
- 在console.log中调用jQuery实例时,jQuery实例如何显示为数组
- 在一个页面中显示three.js的多个实例
- js代码在创建对象的新实例后显示错误
- 如何使用jquery隐藏/更新/显示具有相同ID的多个实例
- 创建对象实例时不显示控制台日志记录
- 在类的下一个实例中显示ajax响应
- JQuery在同一页面上旋转显示多个实例
- Javascript、Jquery和jade:动态表单不显示在所有相关元素的实例中
- 仅针对单个实例显示 jquery 向下滑动