如何在以下代码示例中实现jQuery-Intellisense?

function doSomething($jQueryObject) {
    $jQueryObject.   // I want to have Intellisense here
};

var $parameter = jQuery('body');
doSomething($parameter);

问题在于Intellisense不知道该函数的参数是jQuery对象。我怎样才能告诉函数参数类型?

我知道我可以在函数中编写类似
$obj = $j($jQueryObject);

创建一个新的jQuery-Objekt,但是我想知道是否还有另一种方法可以解决这个问题。

最佳答案

Javascript是一种松散类型的语言,这意味着该类型不是显式声明的,而是在运行时在内部确定的。

Interllisense 不能确定变量的类型(无论是什么编辑器),因为根本没有定义变量。您可以将所需的任何内容传递给doSomething()方法。这是一种强大而灵活的编程方式。不利的一面是,它可能需要执行一些检查以避免错误/异常

如果要构建某种框架或API供其他开发人员使用,则应考虑测试参数的类型。

要测试jQuery类型变量,请执行以下操作:

var $obj = $jQueryObject instanceof jQuery
              ? $jQueryObject
              : $($jQueryObject);

注意:在变量名前加上$可以很好地表明使用该函数的开发人员期望变量的jQuery性质。

编辑:用typeof === "jQuery"替换instanceof jQuery

08-19 08:48