JavaScript i prototype
Friday, 11. April 2008, 22:13:50
Na początku oczywiście najprostszą metodą osiągnąłem
function in_array(array, value)
{
for (var i=0; i<array.length; ++i) {
if (array[i] == value)
return true;
}
return false;
}
// test
var numbers = new Array(2, 3, 5, 7, 11, 13, 17);
alert(in_array(numbers, 3)); // true
alert(in_array(numbers, 4)); // false
Można to jednak zrobić lepiej i bardziej elegancko.
Co daje nam prototype? Ano pozwala odnieść się bezpośrednio do klasy obiektów. Czyli wprowadzając jakąś nową funkcjonalność od tej pory każdy obiekt tej klasy będzie ją posiadał.
Dla naszego przykładu z funkcją in_array():
Array.prototype.in_array = function (value)
{
var length = this.length;
for (var i=0 ; i<length; ++i) {
if (this[i] == value)
return true;
}
return false;
}
// test
var numbers = new Array(2, 3, 5, 7, 11, 13, 17);
alert(numbers.in_array(3)) // true
alert(numbers.in_array(4)) // false
Czyli od teraz każdy obiekt klasy Array posiada metodę (wcześniej mieliśmy "tylko" funkcję) in_array().
Znaczy się wszystko działa ;-)








Anonymous # 13. July 2008, 23:32
thx dobrze ze to napisales bo szukalem gdzies dobrego opisu zastosowan funkcji prototype a jak to mowia lepszy jeden przyklad od.......
Anonymous # 27. November 2008, 21:13
function in_array(array, value)
{
return array.indexOf(value)!=-1;
}