将类作为变量传递时的Javascript变量引用(PhpStorm)

时间:2013-01-29 19:41:16

标签: javascript jquery phpstorm

使用PhpStorm:我的代码将实例化类作为参数传递给函数。我知道className是对特定类的引用。但是,无论如何让我的代码知道ClassName是什么?

   $(document).on('validSelection', function(event,className){
      alert( className.sayHello() );
   });

由于我计划大量使用ClassName,这确实会使编码这个特定功能变得更加容易。在PHP中,您可以通过执行以下操作来强制识别:

/* @var $variable ClassName */

2 个答案:

答案 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某个原型对象。