Javascript 命名匿名函数会破坏我的代码

Javascript 命名匿名函数会破坏我的代码,javascript,jquery-ui,Javascript,Jquery Ui,。 但我想不出来 这项工作: $('#PlayArea').droppable({ drop: function( myEvent, myUI ) { debugger; } }); 但这并不是: function myDroppable() { this.drop = function( myEvent, myUI ) { debugger; } }; $('#PlayArea').droppable(myDroppable);

。 但我想不出来

这项工作:

$('#PlayArea').droppable({
    drop: function( myEvent, myUI ) {
        debugger;
    }
});
但这并不是:

function myDroppable() {
    this.drop = function( myEvent, myUI ) {
        debugger;
    }
};
$('#PlayArea').droppable(myDroppable);

droppable
接受对象文本,而不是函数。这两个代码片段并不相同,您实际上是这样做的(这样更容易看出它是错误的):


如果要使用命名函数,请使其返回
droppable

droppable
接受的配置对象,该对象采用对象文字,而不是函数。这两个代码片段并不相同,您实际上是这样做的(这样更容易看出它是错误的):


如果要使用命名函数,请使其返回您需要使用的
droppable

接受的配置对象,因为
droppable
获取一个对象文本,从而返回它

function myDroppable() {
    return {
        drop: function (myEvent, myUI) {
            debugger;
        }
    }
};
$('#PlayArea').droppable(myDroppable());

您需要使用,因为
droppable
获取一个对象文本,从而返回它

function myDroppable() {
    return {
        drop: function (myEvent, myUI) {
            debugger;
        }
    }
};
$('#PlayArea').droppable(myDroppable());
或 这样就不用冒号作为赋值运算符


这样,您就不会使用冒号作为赋值运算符。

在这种情况下,您不应该将最后一行
$(“#playrea”).droppable(myDroppable())
那么函数实际上是被调用的,而不是作为参数传递的?有没有办法说myDroppable.tolerance='pointer',使用等号作为赋值运算符而不是冒号?@Phillip,你可以使用
$(“#PlayArea”)。on(“drop”,函数(事件,ui){}
。我们有可拖放接受对象文字的限制。所以你可以试试
$(“#play area”)。在(“drop”,new myDroppable().drop)
在这种情况下,你不应该把最后一行
$(“#play area”).droppable(myDroppable())
那么函数实际上是被调用的,而不是作为参数传递的?有没有办法说myDroppable.tolerance='pointer',使用等号作为赋值运算符而不是冒号?@Phillip,你可以使用
$(“#PlayArea”)。on(“drop”,函数(事件,ui){}
。我们有可拖放接受对象文字的限制。因此,您可以尝试
$(“#playare”)。在(“drop”,new myDroppable().drop)
设置中,您必须执行
$(“#playare”).droppable(new myDroppable())
通过设置,您必须执行
$(“#游戏区”).droppable(新的myDroppable())我正在尝试使用等号而不是冒号来分配'drop'方法。我正在尝试使用等号而不是冒号来分配'drop'方法。
var myDroppable = {
    drop: function (myEvent, myUI) {
        debugger;
    }
};
$('#PlayArea').droppable(myDroppable);
myDroppable = {};
myDroppable.drop = function( myEvent, myUI ) {
   debugger;
}
myDroppable.tolerance = 'pointer';
myDroppable.hoverClass = 'ui-state-highlight';
$('#PlayArea').droppable(myDroppable);