javascript错误:对象不是函数
当我在下面运行我的代码时,它显示错误object is not a function
控制台中object is not a function
。 此错误出现在此行var todo = new Todo('contents');
在我的script.js
文件中。 我怎样才能使它工作?
这是我的todo.js文件
var Todo = (function(c) { var contents = $('.' + c); var showel = function (d) { contents.prepend(d); }, add = function (name) { if(name != "") { var div = $('') .append('' + name + '') .append("") .append(""); } return showel(div); }, addUpdateField = function (dom) { var name = dom.parent().find('span').text(), field = $(''), update = $(''); dom.parent().html('').append(field).append(update); return; }, update = function(el) { var val = el.parent().find('input').val(); el.parent().html('' + val + '') .append('') .append(''); return; }, remove = function (el) { return el.remove(); }; return { add : add, update : update, remove : remove, addUpdateField : addUpdateField }; })();
这是我的script.js文件
$(function () { var todo = new Todo('contents'); $('.addBtn').on('click', function() { var name = $(this).parent().find('input[type="text"]').val(); todo.add(name); }); $('.contents').on('click', '.remove', function() { var el = $(this).parent(); todo.remove(el); }); $('.contents').on('click', '.update', function() { var dom = $(this); todo.addUpdateField(dom); }); $('.contents').on('click', '.updateBtn', function() { var el = $(this); todo.update(el); }); });
这是HTML代码
您正在立即执行分配给Todo
的function。 该函数返回一个对象,因此Todo
引用返回的对象,而不是函数(因此“Not a function”错误)。
我假设你想要的东西是这样的:
var Todo = function () { this.add = function () { //Note the use of `this` here //Do stuff }; //etc... }; //No self-invoking parentheses here
现在, Todo
引用了一个构造函数,您可以使用new
运算符调用它,就像您当前正在尝试的那样。
另请注意,此模式将导致Todo
每个实例都具有每个方法的单独副本,这不是非常有效。 将方法声明为prototype
属性会更好:
var Todo = function () { //Initialize the Todo instance }; Todo.prototype.add = function () { //Do stuff };
现在, Todo
所有实例都将共享这些方法的单个副本。