我正在尝试使用JSDoc语法记录我的函数。
/**
*
* My Description
*
* @param {JQuery|???} input
* @returns {JQuery}
*/
function foo(input){
return $('selector');
}
上面的函数接受一个参数,该参数可以是JQuery对象,也可以是document.getElementById
返回的元素。
getElementById
的返回值的有效JSDoc类型是什么?
例如,以下内容均有效:
foo($('#input'));
foo(document.getElementById('input'));
另外,我将来在哪里可以找到这个?
答案 0 :(得分:16)
getElementById
将始终返回Element的子类型。对于HTML文档,HTMLElement
将更合适
document.getElementById('some-anchor').constructor //HTMLAnchorElement
document.getElementById('some-div').constructor //HTMLDivElement
在所有情况下,document.getElementById('some-element') instanceof HTMLElement
,恕我直言,将返回真实
答案 1 :(得分:5)
虽然技术上getElementById
的返回值为object
,但文档应该有助于开发人员知道它是什么。
我个人跟Element
一起去,但没有迹象表明你应该使用什么。
答案 2 :(得分:3)
在您的方案中Element
似乎是最合适的,但一般来说,您希望像您的代码所允许的那样准确。
例如,使用最新的高级IDE,使用Element
无法为disabled
或readOnly
等属性提供自动完成功能。我觉得使用HTMLInputElement
@type代替它很有用。
答案 3 :(得分:1)
HTMLElement
或any
可用于您的示例。
/**
* @param {JQuery|HTMLElement} input
* @returns {JQuery}
*/
function foo(input){
return $('selector');
}
答案 4 :(得分:0)
getElementById()
也会返回一个javascript对象。
在jQuery中 - > $('#input')只是将带有id输入的元素包装到jQuery对象中,以便可以在其上应用jQuery方法。
因此,在这两种情况下,类型都是一个对象。
var x = document.getElementById('input');
alert(typeof x);// object