Я сейчас пытаюсь разобраться с использованием прототипа в JavaScript.
Чтобы поэкспериментировать с этим, я написал функцию, которая эффективно работает, позволяя вам помещать предложение where в массивы:
Array.prototype.where=(function(){
var tmpArr=[],
success;
for (var x in this){
var success=true;
for (var i in arguments){
if (this[x][arguments[i][0]]!=arguments[i][1]){
success=false;
break;
}
}
if (success==true){
tmpArr.push(this[x]);
}
}
return tmpArr;
});
Примером использования будет:
arrayName.where([0, 'Fred'], [1, 'Bloggs']);
Ради теста это работает довольно хорошо.Единственная проблема состоит в том, что если бы вы тогда запустили
for (var x in someArrayHere){
console.log(someArrayHere[x]);
}
Вы получите выходной массив, но с записью, представляющей функцию, которую вы прототипировали.
Насколько я могу работатьвне, это отсортировано путем установки функции как не перечисляемой, но я не могу найти никаких статей, объясняющих, как остановить это.
Как бы я поступил об этом?Или я должен был бы делать ниже каждый раз?
for (var x in someArray){
if (typeof tSch[x]!="object"){
}
}