ここではjqueryのようにそれぞれのメソッドを書くつもりですが、各関数imはオブジェクトが配列のようなものかどうかをチェックし、imはループを実行し、arugumentsを送ることでコールバック関数を呼び出すような配列各機能それぞれの関数で正しい値を取得していますが、コールバックでは未定義として返ります。なぜコールバックで渡された値が未定義を返すのですか?
var obj = document.getElementsByTagName('input');
var isArrayLike = function(obj){
\t if(typeof obj.length === "number"){
\t \t if(obj.length===0){
\t \t \t return true; \t \t \t
\t \t }
\t \t else if(obj.length>=0){
\t \t \t return (obj.length)-1 in obj; \t
\t \t }
\t }
\t return false;
}
function cb(ob,ik){
//here value of ob is returning as 2 and id as undefined
console.log(ob)
\t console.log(ik)
\t if(document.getElementById(ik).checked){
\t \t console.log(ik)
\t } \t
}
function each (obj,cb) {
\t if(isArrayLike(obj)){
\t \t for(var i=0;i<obj.length;i++){
\t \t \t var id = obj[i].getAttribute('id');
\t \t \t cb.call(obj,id)
\t \t }
\t }
}
each(obj,cb)
構文はhttps://developer.mozilla.org/en-US/に 'fun.call(thisArg [、引数1 [、ARG2 [、...]]])' –
外観ですdocs/Web/JavaScript/Reference/Global_Objects/Function/call –