JavaScript ES12 ile Gelecek Olan Özellikler

M. Caner Özkan
2 min readJan 30, 2021

--

Herkese merhabalar,

Bu yazımda sizlerle ECMAScript2021 (ES12) ile gelecek olan bazı yeni özellikleri örnekler vererek paylaşmaya çalışacağım.

ES12, geliştirilme sürecinin 4. aşamasında ve 2021 yılının Haziran ayında yayınlanması bekleniyor. Bu özelliklerden 6 tanesini şu şekilde listeledim ve tek tek açıklayacağım.

  1. Promise.any()
  2. WeakRefs
  3. String.prototype.replaceAll()
  4. Numeric seperators
  5. Logical assignment operators
  6. Private Methods

Promise.any()

Promise.any() metodunda, birden fazla söz alınır ve sözlerden herhangi birisi yerine getirildiğinde işlem tamamlanır. Yani sözlerden ilk önce hangisi çözülür ise o alınır gibi bir şey söyleyebiliriz.

const promise1 = Promise.reject(0);const promise2 = new Promise((resolve) => setTimeout(resolve, 100, 'quick'));const promise3 = new Promise((resolve) => setTimeout(resolve, 500, 'slow'));const promises = [promise1, promise2, promise3];Promise.any(promises).then((value) => console.log(value));// çıktı: "quick"

Weak References

Zayıf referanslar bazı durumlarda ciddi şekilde işimize yarayabilirler. Örneğin; çok fazla belleğe ihtiyaç duyan ve birçok key/value içeren önbellek uygulamak için bir Map nesnesi kullanabiliriz. Bu durumda, bizim için uygun olan, anahtar/değer çiftlerinin işgal ettiği belleği mümkün olan en kısa sürede boşaltmaktır ve WeakRef’ler bunu yapmamıza izin verir.

Bir nesne, zayıf bir nesne olarak tanımlandığında Garbage Collector’ın nesneyi toplamasını engellemediği anlamına gelir. Nesneyi sonsuza kadar bellekte tutmak istemediğimizde kullanışlıdır.

const largeObject = new WeakRef({
name: "CacheMechanism",
type: "Cache",
implementation: "WeakRef"
});

largeObject.deref();
largeObject.deref().name;
largeObject.deref().type;
largeObject.deref().implementation;

String.prototype.replaceAll()

Bu yöntem tekrarlı karakterlerin tümünü, seçeceğimiz bir karakter ile değiştirmemize olanak tanır. Çığır açan bir yenilik olmasa da bazı durumlarda işimizi kolaylaştıracaktır.

const fullname = 'Mustafa+Caner+Özkan';
const fullnameFormated = fullname.replaceAll('+',' ');
//Mustafa Caner Özkan

Numeric Seperators

Büyük sayılarla çalıştığımızda ortaya çıkan karışıklık sorunlarını gidermemize yarayan bir özelliktir.

Örneğin; “86293741" sayısını düşünürsek, bunun 86 milyon olarak okunabilmesi (ayırt edilebilmesi) epey zordur.

ES12 ile birlikte bu sayıyı aşağıdaki gibi tanımlayabiliriz;

const sayi = 86_293_741;

Logical Assignment Operators

Yeni mantıksal atama operatörleri (&&=, ||=, ??=), mantıksal işleme dayalı değişkene bir değer atamaya yarar.

&&= operatörü, atamayı yalnızca sol işlenen true olduğunda gerçekleştirir:

let first = 5;
let second = 8;

first &&= second;

||= operatörü, atamayı yalnızca sol işlenen false olduğunda gerçekleştirir:

let first = null;
let second = 5;

first ||= second;
// first 5 oldu

??= operatöründe, bir atama yalnızca sol işlenen null veya undefined olduğunda gerçekleştirilir:

let first = null;
let second = 5;

first ??= second;

Private Methods

Private metotlar sadece tanımlandığı sınıfın içinden erişilebilirler. Private metotlar “#” işareti ile başlar.

class Person {

// Private method
#setType() {
console.log("I am Private");
}

// Public method
show() {
this.#setType();
}

}

const personObj = new Person();
personObj.show();
// "I am Private";
personObj.setType();
// TypeError: personObj.setType is not a function

Medium’daki ilk yazımı okuduğunuz için teşekkürler..

--

--

M. Caner Özkan
M. Caner Özkan

Written by M. Caner Özkan

Hi! My name is Caner. I am a Computer Engineering Student at Konya Technical University. Travel, basketball and technology(…) lover.

No responses yet