javascript 在扩展函数中使用magic e

moiiocjp  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(112)

我有一个基本的Drop事件处理程序,如下所示:

function Drop(e){
    e.preventDefault();
    var data=e.dataTransfer.getData("Text");
    var child = $('[target_id="'+data+'"]').get(0);
    e.target.appendChild(child);
}
function DropHandler(){}
DropHandler.prototype={
        ...
    Drop : Drop
}

创建新对象并扩展基本放置处理程序:

function AdminDropHandler(){}
//Extend the DropHandler
extend(AdminDropHandler,DropHandler);
//Override Drop method in AdminDropHandler
AdminDropHandler.prototype.Drop=function(){
    DropHandler.prototype.Drop.apply(this,arguments);
    var parent_id = e.target.id;// not defined error
    ...
}

它可以扩展DropHandler的功能,但是我用的e看起来很失落,这个问题怎么解决?

qni6mghb

qni6mghb1#

您尚未在函数中定义e。请尝试定义它:

AdminDropHandler.prototype.Drop = function(e) {
    DropHandler.prototype.Drop.apply(this, arguments);
    var parent_id = e.target.id; // should work now
};

您也可以这样做,但不推荐这样做,因为形参可以很好地完成这项工作:

AdminDropHandler.prototype.Drop = function() {
    var e = arguments[0];
    DropHandler.prototype.Drop.apply(this, arguments);
    var parent_id = e.target.id; // should work now
};

相关问题