די סימבאָל אין דזשאַוואַסקריפּט

באַקומען צו וויסן סימבאָלס: די יינציק דאַטן טיפּ פֿאַר אָבדזשעקט פּראָפּערטיעס

אין דזשאַוואַסקריפּט, סימבאָלס זענען יינציק דאַטן טייפּס וואָס קענען ווערן גענוצט צו שאַפֿן ידענטיפיערס פֿאַר כייפעץ פּראָפּערטיעס. סימבאָלס זענען נישט ווי סטרינגס אָדער נומערן, און זיי קענען ניט זיין קאָנווערטעד צו די דאַטן טייפּס. דאָס איז וואָס מאכט זיי ידעאַל פֿאַר קריייטינג ידענטיפיערס.

באַניץ פון סימבאָלס אין דזשאַוואַסקריפּט

ווען איר שאַפֿן אַ סימבאָל, איר קענען אָפּטיאָנאַללי געבן עס אַ באַשרייַבונג. דאָס איז נוציק פֿאַר דיבאַגינג, אָבער עס איז נישט פארלאנגט.

שאפן אַ סימבאָל איז פּשוט.

const mySymbol = Symbol();

איר קענען אויך שאַפֿן אַ סימבאָל מיט אַ באַשרייַבונג.

const mySymbol = Symbol("my description");

אויב איר מאַכן קייפל סימבאָלס מיט דער זעלביקער באַשרייַבונג, זיי וועלן זיין אַנדערש וואַלועס.

const sym1 = Symbol("foo");
const sym2 = Symbol("foo");

// false
console.log(sym1 === sym2);

וואָס מאכט סימבאָלס יינציק

סימבאָלס זענען אָפט געניצט ווי ידענטיפיערס פֿאַר כייפעץ פּראָפּערטיעס. דאָס איז ווייַל סימבאָלס זענען געראַנטיד צו זיין יינציק, און זיי זענען נישט קאָנווערטעד צו סטרינגס.

const obj = {};
obj[mySymbol] = "bar";

// "bar"
console.log(obj[mySymbol]);

איר קענען נוצן סימבאָלס ווי שליסלען פֿאַר אַבדזשעקץ פּראָפּערטיעס, אָבער איר קענען נישט נוצן זיי ווי פאַרמאָג נעמען (קיז) אין JSON.

const sym = Symbol("foo");
const obj = { [sym]: "bar" };

// {}
console.log(JSON.stringify(obj));

סימבאָלס זענען נישט ינומעראַבאַל, אַזוי זיי וועלן נישט ווייַזן זיך ווען איר נוצן אַ פֿאַר-אין שלייף אויף אַ כייפעץ.

const obj = {};
obj[Symbol("a")] = "a";
obj[Symbol("b")] = "b";

for (var key in obj) {
  // undefined
  console.log(key);
}

איר קענען נוצן Object.getOwnPropertySymbols צו באַקומען אַ מענגע פון אַלע סימבאָלס אויף אַ כייפעץ.

const obj = {};
obj[Symbol("a")] = "a";
obj[Symbol("b")] = "b";

const symbols = Object.getOwnPropertySymbols(obj);

// [Symbol(a), Symbol(b)]
console.log(symbols);

ניצן אַ סימבאָל ווי אַן יטעראַטאָר

איר קענט נוצן די באַוווסט Symbol.iterator צו באַקומען אַ סימבאָל וואָס קענען זיין געוויינט ווי אַן יטעראַטאָר.

const arr = [1, 2, 3];
const it = arr[Symbol.iterator]();

// { value: 1, done: false }
console.log(it.next());

// { value: 2, done: false }
console.log(it.next());

// { value: 3, done: false }
console.log(it.next()); 

// { value: undefined, done: true }
console.log(it.next());

א מער פאַקטיש-וועלט בייַשפּיל

איר קענען מאַכן דיין אייגענע סימבאָלס, אָבער עס איז קיין וועג צו גאַראַנטירן אַז זיי זענען יינציק. אויב איר דאַרפֿן אַ יינציק סימבאָל, איר זאָל נוצן סימבאָל ().

רעכן איר האָבן אַ כייפעץ וואָס רעפּראַזענץ אַ מענטש. איר ווילן צו לייגן אַ פאַרמאָג צו דעם כייפעץ וואָס סטאָרז דעם מענטש 'ס געבורט יאָר, אָבער איר טאָן ניט וועלן אַז די פאַרמאָג זאָל זיין ינומעראַבאַל. איר קענען טאָן דאָס מיט אַ סימבאָל:

const person = {
  name: "John Doe"
};
const birthYear = Symbol("birth year");
person[birthYear] = "1955";

for (var key in person) {
  // name
  console.log(key); 
}

// 1955
console.log(person[birthYear]);

פֿאָרשלאָגן

פֿאַרבונדענע

נאָך-וואָרט

שפּראַכן