Javascript 未调用原型方法
我正在单击创建一个自定义对象,然后尝试访问它的原型方法Javascript 未调用原型方法,javascript,jquery,oop,Javascript,Jquery,Oop,我正在单击创建一个自定义对象,然后尝试访问它的原型方法 $(function(){ $('.addtask').on("click", function(){ var new_task = new Task(); $('.deletetask').on("click", function(){ new_task.deleteTask(); }); function Task(){
$(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()
},
}
});
});
如何访问prototype方法deleteTask()?在创建
新任务后,您正在设置任务的prototype
。这样做不会更改已创建实例的原型,因为原型在实例创建时被引用
将Task.prototype={
assignment移动到创建新任务之前
如果确实希望在创建所有实例后向其添加函数,请更改构造函数的原型,而不是替换它:
Task.prototype.deleteTask = function(){...
在创建新任务后,您正在设置任务的原型。这样做不会更改已创建实例的原型,因为原型在实例创建时被引用
将Task.prototype={
assignment移动到创建新任务之前
如果确实希望在创建所有实例后向其添加函数,请更改构造函数的原型,而不是替换它:
Task.prototype.deleteTask = function(){...
在
调用时,您应该将任务
的定义及其原型
方法移动到初始的之前。这将顺便解决@dystroy发现的问题,即您在创建任务
的实例后试图设置其原型
如前所述,Task
函数在每次调用click处理程序时都会重新创建,因此每次单击时创建的Task
对象将是不同类的实例,这使得使用prototype
变得毫无意义。prototype方法是在多个实例之间共享方法的有效方法,并且继承,但你两个都没有用
或者,将任务
功能保留在原来的位置,但使用原型
方法放弃,例如:
function Task() {
this.html = "<li>Add Description<span class='deletetask'></span></li>";
this.removeTask = function() {
this.remove();
}
}
函数任务(){
this.html=“添加说明” ”;
this.removeTask=函数(){
这个。删除();
}
}
(注意:this.remove
此时也未定义?)您应该将任务
及其原型
方法的定义移到初始调用之前。
调用时,这将顺便解决@dystroy发现的问题,您在创建任务
的实例后尝试设置其原型
如前所述,Task
函数在每次调用click处理程序时都会重新创建,因此每次单击时创建的Task
对象将是不同类的实例,这使得使用prototype
变得毫无意义。prototype方法是在多个实例之间共享方法的有效方法,并且继承,但你两个都没有用
或者,将任务
功能保留在原来的位置,但使用原型
方法放弃,例如:
function Task() {
this.html = "<li>Add Description<span class='deletetask'></span></li>";
this.removeTask = function() {
this.remove();
}
}
函数任务(){
this.html=“添加说明” ”;
this.removeTask=函数(){
这个。删除();
}
}
(注意:this.remove
此时也未定义?)