私は、動的検証システムに取り組んでいます。何らかの理由で、args配列mainfuncのshift()がvalidateNumberに渡って正しく動作しません。警告ボックスの隣にあるコメントに出力されるコードは次のとおりです。はなぜシフト())(適用使用して動的に呼び出された関数からの私の引数に不正に取り組んでいますか?
function mainfunc (func){
//this calls the function validateNumber and passes args to it.
this[func].apply(this, Array.prototype.slice.call(arguments, 1));
}
function validateNumber(args) {
alert(args); //this functions normally. for example, displays fish,3,5
var text = args.shift; //would expect this to return 'fish', right?
alert(text); //instead of 'fish' alerts 'function shift() { [native code] }'. This is the problem.
var minimum = args.shift;
var maximum = args.shift;
return text;
}
validationArgs = classList[i].split('-');
functionName = validationArgs.shift();
validationArgs.unshift($(this).val());
mainfunc(functionName, validationArgs); //calls mainfunc which calls the function
これはなぜこのように振る舞うのでしょうか。注:私はこのStackOverflowの答えからmainfuncをcribbed:Calling dynamic function with dynamic parameters in Javascript
編集:ああ、私の良さ。私はばかです。私はshift()を問題のタイトルで正しく使うことさえできます!皆さんありがとう。