我要在单击时创建一个自定义对象,然后尝试访问它的原型方法。

$(function(){
    $('.addtask').on("click", function(){
        var new_task = new Task();

        $('.deletetask').on("click", function(){
            new_task.deleteTask();
        });

        function Task(){
         this.html="<li>Add Description<span class='deletetask'></span></li>";
        }

        Task.prototype = {
            constructor: Task,
            deleteTask: function(){
                this.remove()
            },
        }

    });
});


现在,当我单击类deleteTask时,它说:

TypeError: new_task.deleteTask is not a function


new_task.deleteTask();


如何访问原型方法deleteTask()?

最佳答案

创建Task后,您将设置new Task的原型。您不会通过这样做来更改已创建实例的原型,因为原型是在实例创建时引用的。

在创建Task.prototype = {之前移动new Task分配。

如果确实要在创建所有实例后向所有实例添加函数,请更改构造函数的原型,而不是替换它:

Task.prototype.deleteTask = function(){...

07-24 16:35