使用PhpStorm:我的代码将实例化类作为参数传递给函数。我知道className
是对特定类的引用。但是,无论如何让我的代码知道ClassName
是什么?
$(document).on('validSelection', function(event,className){
alert( className.sayHello() );
});
由于我计划大量使用ClassName
,这确实会使编码这个特定功能变得更加容易。在PHP中,您可以通过执行以下操作来强制识别:
/* @var $variable ClassName */
答案 0 :(得分:1)
我的代码将实例化类作为参数传递给函数
不,不是。您刚刚在函数列表中添加了另一个参数,但是当它被调用时(通过jQuery,当事件发生时),它不会被传递。如果绑定事件处理程序时可以访问className
,则可以利用闭包:
var className = {
sayHello : function() {
return "hello";
}
};
$(document).on('validSelection', function(event){
alert(className.sayHello()); // works
});
另一方面:我看到你正在使用自定义事件。因此,如果您在代码的任何其他位置调用.trigger
,那么您可以传递任何内容作为第二个参数,并将它传递给事件处理程序:
var className = {
sayHello : function() {
return "hello";
}
};
$(document).trigger('validSelection', className);
// On a separate scope...
$(document).on('validSelection', function(event, className){
alert(className.sayHello()); // works
});
答案 1 :(得分:0)
在JavaScript中,我们没有类,但使用“原型”来表现得像我们一样。因此,要检查对象的“类别”,您需要使用其中一种原型方法。
如果你有一个易于理解的className
对象的实例化副本,你可以使用className.prototype.constructor
并检查它是否是isPrototypeOf
其他对象。
或者,您可以检查className
是否是instanceOf
某个原型对象。