DOMTokenList#

stringifier#

Operacja specjalna stringifier widoczna w definicji Web IDL interfejsu DOMTokenList oznacza, że obiekt implementujący ten interfejs powinien zostać zamieniony na postać tekstową według niestandardowych reguł określonych w specyfikacji.

Opis działania#

Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
var string = domTokenList.toString(); // jawnie
var string = stringMethod(domTokenList); // niejawnie

gdzie poszczególne człony oznaczają:

Algorytm wywołania operacji specjalnej stringifier nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:

  1. Zwróć wynik działania kroków serializacji dla obiektu kontekstu.

Były przymiarki do zmiany zachowania dla operacji stringifier tak, aby zwracała wynik serializacji uporządkowanego zestawu zamiast wartości ze skojarzonego atrybut, co ułatwiłoby testowanie prawidłowego działania zestawów (np. w kwestii przestrzegania unikatowości słów). Niestety żadna przeglądarka internetowa nie wprowadziła stosownych korekt i pomysł zarzucono (DOM - Bug 105). W razie potrzeby można sięgnąć po inne rozwiązania wprost z JS-a, które zapewnią podobną funkcjonalność (np. iterując po elementach zestawu lub konwertując zestaw na tablicę i potem na łańcuch znakowy).

Alternatywnie można skorzystać z identycznie działającej właściwości DOMTokenList.value (przy odczycie).

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<script>

	function showTokens(set){
		return Array.prototype.slice.call(set).join(" ");
	}

	var html = document.documentElement; // referencja do elementu HTML
	var list = html.classList; // referencja do zestawu słów DOM

	html.className = "Test1 Test2 Test3 Test3"; // ustawiamy wartość atrybutu class

	document.write(html.className); // Test1 Test2 Test3 Test3
	document.write("<br>");
	document.write(html.className.length); // 23

	document.write("<br><br>");

	document.write(showTokens(list)); // Test1 Test2 Test3
	document.write("<br>");
	document.write(list.length); // 3

	document.write("<br><br>");

	document.write(list.constructor); // function DOMTokenList() { [native code] }
	document.write("<br>");
	document.write(typeof list); // object - zestaw słów DOM jest obiektem
	document.write("<br>");
	document.write(list); // Test1 Test2 Test3 Test3 - niejawna konwersja obiektu na tekst
	document.write("<br>");
	document.write(list.toString()); // Test1 Test2 Test3 Test3 - wymuszona konwersja obiektu na tekst
	document.write("<br>");
	document.write(list.value); // Test1 Test2 Test3 Test3 - alternatywna właściwość

	document.write("<br><br>");

	document.write(list.hasOwnProperty("toString")); // false
	document.write("<br>");
	document.write(list.constructor.hasOwnProperty("toString")); // false
	document.write("<br>");
	document.write(list.constructor.prototype.hasOwnProperty("toString")); // true

</script>

Operacja specjalna stringifier pojawia się dopiero w specyfikacji DOM4.

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
interface DOMTokenList {
	stringifier;
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

DOMTokenList (H1) stringifier (H2) Opis działania (H3) Składnia Web IDL (H3) Specyfikacje i inne materiały (H3)