🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
5 messages
5 total messages Started by jivanmukta Wed, 25 Jun 2014 14:20
newbie: Array.prototype.inArray
#51427
Author: jivanmukta
Date: Wed, 25 Jun 2014 14:20
33 lines
1848 bytes
Uczę się języka JavaScript:

<html>
<head>
<title>Test</title>
</head>
<body>
<script type="text/javascript">
Array.prototype.inArray = function(needle) {
	for (var i = 0, len = this.length; i < len; i++) {
		if (this[i] == needle) {
			return true;
		}
	}
	return false;
}
var a = [1, 2, 3];
document.write(a.inArray(2) ? '1' : '0');
</script>
</body>

To działa. Ale nie rozumiem właściwie dlaczego nie mogę dodać metody inArray do Array bezpośrednio. Przecież Array to obiekt.

Array.inArray = function(needle) {
	for (var i = 0, len = this.length; i < len; i++) {
		if (this[i] == needle) {
			return true;
		}
	}
	return false;
}

Mam problem z rozumieniem prototypów,
Re: newbie: Array.prototype.inArray
#51428
Author: NotBear
Date: Wed, 25 Jun 2014 15:03
15 lines
1517 bytes
W dniu 2014-06-25 16:20, jivanmukta@poczta.onet.pl pisze:
> Ale nie rozumiem właściwie dlaczego nie mogę dodać metody inArray do Array bezpośrednio. Przecież Array to obiekt.

Owszem, Array to obiekt, ale tylko dlatego, ze w JS niemal wszystko jest 
obiektem :-). Array to konstruktor tablic. typeof Array zwraca 'function'.

Mozesz bezposrednio przypisac metode do konkretnej instancji tablicy, np:
var myArray = [];
myArray.inArray = function() {/*whatever*/}

Przypisanie do prototypu za to spowoduje, ze metoda bedzie dostepna we 
wszystkich obiektach danego typu.

-- 
NotBear
Re: newbie: Array.prototype.inArray
#51429
Author: jivanmukta
Date: Wed, 25 Jun 2014 15:26
4 lines
1540 bytes
> Przypisanie do prototypu za to spowoduje, ze metoda bedzie dostepna we 
> wszystkich obiektach danego typu.

Czyli właściwość prototype to takie super ze Smalltalka albo parent z PHP5, tak? Jeśli nie to czym się różni?
Re: newbie: Array.prototype.inArray
#51431
Author: Cezary Tomczyk
Date: Wed, 25 Jun 2014 20:12
17 lines
1668 bytes
W dniu 2014-06-25 17:03, NotBear pisze:
> W dniu 2014-06-25 16:20, jivanmukta@poczta.onet.pl pisze:
>> Ale nie rozumiem właściwie dlaczego nie mogę dodać metody inArray do
>> Array bezpośrednio. Przecież Array to obiekt.
>
> Owszem, Array to obiekt, ale tylko dlatego, ze w JS niemal wszystko jest
> obiektem :-). Array to konstruktor tablic. typeof Array zwraca 'function'.

typeof jest dość ogólne :-) ja preferuję:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString#Using_toString_to_detect_object_type

[...]

-- 
Cezary Tomczyk
http://www.ctomczyk.pl/
Re: newbie: Array.prototype.inArray
#51430
Author: Cezary Tomczyk
Date: Wed, 25 Jun 2014 20:13
13 lines
1549 bytes
W dniu 2014-06-25 17:26, jivanmukta@poczta.onet.pl pisze:
>> Przypisanie do prototypu za to spowoduje, ze metoda bedzie dostepna we
>> wszystkich obiektach danego typu.
>
> Czyli właściwość prototype to takie super ze Smalltalka albo parent z PHP5, tak? Jeśli nie to czym się różni?

Lektura obowiązkowa:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype

-- 
Cezary Tomczyk
http://www.ctomczyk.pl/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads