Hier versuche ich eine benutzerdefinierte Methode wie in jquery zu schreiben, dafür in jeder Funktion zu überprüfen, ob das Objekt array-artig ist oder nicht und ob es Array wie im Ausführen einer Schleife und Aufruf einer Callback-Funktion durch Senden von Aruguments in ist jede Funktion. In jeder Funktion werden die richtigen Werte erhalten, aber im Callback werden sie als undefiniert zurückgegeben.warum die in einem Callback übergebenen Werte undefined zurückgeben?
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)
Syntax für die Anruffunktion ist 'fun.call (thisArg [, arg1 [, arg2 [, ...]]])' –
Blick in https://developer.mozilla.org/en-US/ docs/Web/JavaScript/Referenz/Global_Objects/Function/call –