Rup*_*tel 1 javascript jquery overloading
我一直在使用jQuery一年,但我仍然不明白这段代码是如何工作的:
alert($('#elementID').val()); // It gets the value of element
$('#elementID').val('setting Value'); // the same function is setting value
Run Code Online (Sandbox Code Playgroud)
jquery的其他一些功能也是这样的 .html()
我想知道这件事是如何实现的?他们如何重载javascript函数?
javascript中没有重载,因此使用可选参数执行此类专长.JavaScript允许您在不指定参数的情况下调用函数.例如:
function val(text)
{
if (arguments != null && arguments.length > 0) {
alert("i'm setting value here to " + text);
} else {
alert("i'm getting value here");
}
}
val(); // alerts value getter
val('hi!'); // alerts value setter and the message
Run Code Online (Sandbox Code Playgroud)
编写这个例子是为了指出你在每个函数中得到的参数集合.每个函数都可以将它的参数作为集合获取,并可以相应地执行它的逻辑.但是,显示的示例在现实世界中的编写方式不同:
function val(text)
{
if (typeof text === "string") {
alert("i'm setting value here to " + text);
} else {
alert("i'm getting value here");
}
}
Run Code Online (Sandbox Code Playgroud)
您未传递给函数的每个参数都获得undefined(not null)的"值" .这使您可以使用最短的逻辑表达式.您可以在if语句中使用任何值.将被评估为null或undefined将被简单评估为的变量false.
如下面的评论所指出,如果text参数为空,则字符串if (text)将返回false.因此,对于文本参数,请按类型检查参数.
阅读null和undefined区别对你来说是有益的.
它只是通过检查是否使用参数调用函数来完成
function stuff(moreStuff){
if(typeof moreStuff === "undefined"){
return originalStuff;
}else{
setStuff(moreStuff);
}
}
Run Code Online (Sandbox Code Playgroud)