だから、
function test1(a, b, c) {
/*コード*/
}
とか書いても、
test1("test1");
と呼び出すことができます。
引数が少なかった場合は、残りの引数はundefinedになります。
じゃあ、多かった場合はどうするの?ってことになりますが、
それは Argumentsオブジェクトを利用して取得することができます。
下記はArgumentsオブジェクト(argments)を使って引数を取り出しています。
function argument_test() {
str = "";
for (var i = 0;i <= arguments.length;i++) {
str += arguments[i];
}
document.getElementById("result").innerHTML = str;
}
function load_func() {
argument_test("test1", "test2", "test3");
}
上記は、test1test2test3が出力されます。
引数にオブジェクトを渡して for/in文で取り出すなんかもできます。
function argument_object_test() {
str = "";
for (var i = 0; i < arguments.length; i++) {
var target = arguments[i];
for (var name in target) {
str += target[name] + " ";
}
}
document.getElementById("result").innerHTML = str;
}
function func1() {
argument_object_test({
aibu: "saki",
horikita: "maki",
ueto: "aya",
});
}
これはJQuerryなんかでも使われていて、
jQuery.extend = jQuery.fn.extend = function() {
// copy reference to target object
var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
のようにArgumentsオブジェクトを利用しています。
で利用する側は
jQuery.fn.extend({
show: function(speed,callback){
....
});
のようにオブジェクトを渡したりしています。
DHTMLのコンテンツばかり書いていると、
このようなコアJavaScriptについてついつい忘れてしまうものです。
もっと勉強しないとね。
0 件のコメント:
コメントを投稿