[A'dan Z'ye] JavaScript Öğreniyoruz #2

'Execution

Kıdemli Üye
13 Ocak 2018
3,227
29
A'DAN Z'YE JAVASCRİPT ÖĞRENİYORUZ #2

Merhabalar,

A'dan Z'ye Javascript Eğitimimizin 2. Partına hoşgeldiniz. Bu partımızda artık temellerden çıkarak javascripti genel hatlarıyla öğrenmeye devam edeceğiz. Hazırsanız buyrun başlayalım,


DOCUM€NT OBJECT MODEL (DOM) NEDİR ?

Bu model, html etiketlerinin bir araya gelmesiyle oluşur ve html etiketlerinin diğer programlama dilleri ile etkileşime geçmesini sağlayan modeldir. Bu model üzerindeki elementlerimizi javascript kodları ile manipüle edebiliriz. Bu sayede html sayfalarını dinamik bir şekilde geliştirme olanağımız olacaktır

DOCUM€NT OBJESİ

Not: Forum filtrelemesi sebebiyle "documént" kelimesi filtreye takılarak okunmamaktadır. Kelimenin filtreye takılmaması için "e" harfi "é" harfi ile değiştirilmiştir. Siz kod yazarken bu harfi "e" olarak değiştiriniz.

documént objesi, window objesi içerisinde bulunur. Objeyi görüntülemek için aşağıdaki kodu yazıyoruz,

Kod:
console.log(window.documént);

Bu objemiz içerisinde çeşitli özellikler ve elementler mevcut şimdi bu özelliklerin bazılarına göz atalım. Aşağıdaki kodu yazarak html elementlerini görebiliriz,

Kod:
console.log(documént.all);



Yukarıdaki kodu daha önce öğrendiğimiz bilgilerle harmanlayıp elementler arasında gezinebilirsiniz. Örneğin HTML kodlarımızda body etiketine javascript kodlarımızla erişelim. Bunun için aşağıdaki kodu yazıyoruz,

Kod:
console.log(documént.body);



Şimdi getAttribute fonksiyonunu kullanalım. Örneğin sitemizdeki linklerden 0. indexe sahip linki ve o linke ait class özelliğini görüntülemek istediğimizi varsayalım. Bu doğrultuda aşağıdaki gibi bir kod yazıyoruz,

Kod:
let value;
value = documént.links[0].getAttribute("class");
console.log(value);



Aynı fonksiyonları "forms","scripts" vs. özellikleri için de kullanabilmemiz mümkün. Ben mantığı kavratmak amacıyla birkaç tane örnek verdim.

ELEMENT SEÇME

Javascript kodları HTML kodlarına ait elementleri seçebildiğimizi biliyorduk. Bu başlığımızda bunlara değinelim,

Elementleri ID'ye Göre Seçme

Javascript üzerinde HTML elementlerini id'ye göre seçmek için ilk olarak seçmek istediğimiz elemente "id" değeri atamamız gerekmektedir. Örneğin bizim seçeceğimiz elementin id'si "javascript" olsun. Kodumuzu aşağıdaki gibi yazdığımız takdirde javascript id'li elementimiz konsolumuzda görünecektir,

Kod:
let element;
element = documént.getElementById("javascript");
console.log(element);

Elementleri Class'a Göre Seçme

javascript üzerinde HTML elementlerini class özelliğine göre seçmek için elemente ait class değerini bilmemiz gerekmekte. Örneğin class değeri "js" olan elementleri seçmek istediğimizi varsayalım. Bunun için aşağıdaki kodu yazıyoruz,

Kod:
let element;
element = documént.getElementsByClassName("js");
console.log(element);

Elementleri Tag'e Göre Seçme

Javascript üzerinde HTML elementlerini taglere göre seçebilmek için seçmek istediğimiz tagin adını kodumuza yerleştirmemiz gerekiyor. Örneğin HTML üzerindeki "button" tagine sahip elementleri seçmek istediğimizde aşağıdaki kodu yazıyoruz,

Kod:
let element;
element = documént.getElementsByTagName("button");
console.log(element);

Query Selector

Tanımlanan özelliğe sahip elementi özelliğin başına semboller ekleyerek kısa yoldan seçmemizi sağlayan bir metodtur. Bu metod, tanımlanan özelliğe sahip bulduğu ilk elementi konsola yazdırır. Bu metodta, belirtilen id değerine sahip elementi bulmak için id değerinin başına " # " koyarak aşağıdaki şekilde kodu yazıyoruz, örneğin seçeceğimiz elementin id'si "js" olsun

Kod:
let element;
element = documént.querySelector("#js");
console.log(element);

Bu metodla class özelliğine göre element seçmek için class isminin başına nokta ( . ) koyarak aşağıdaki şekilde yazıyoruz.

Kod:
let element;
element = documént.querySelector(".js");
console.log(element);

Bu metodla tag'e göre element seçmek için kodumuzu aşağıdaki şekilde yazmamız yeterli olacaktır,

Kod:
let element;
element = documént.querySelector("js");
console.log(element);

Yukarıdaki şekilde yazdığımız kodlarda javascript, yalnızca belirtilen değere ait ilk elementi seçecek. Biz eğer belirtilen değere ait bütün elementleri seçmek istersek " querySelectorAll " metodunu kullanacağız. Örneğin "js" id değerine ait bütün elementleri seçmek istersek kodumuzu aşağıdaki gibi yazmamız gerekir,

Kod:
let element;
element = documént.querySelectorAll("#js");
console.log(element);

SEÇİLEN ELEMENTLERE DİNAMİK ÖZELLİKLER EKLEME

Örnekler üzerinden giderek başlayalım. İlk olarak "js" id değerine sahip bir elementin class özelliğine bakalım

Kod:
const element = documént.querySelector("#js");
console.log(element.className);

Yukarıdaki kod ile js id değerine sahip elementin class özelliğine bakabilmiş olduk. Örneği çeşitlendirmek mümkün. Şimdi elemenlerimizin özelliklerini değiştirmeye çalışalım,

Örneğin "javascript" id değerine sahip elementin rengini javascript üzerinde değiştirmek isteyelim. Bunun için aşağıdaki kodu yazıyoruz,

Kod:
const element = documént.querySelector("javascript");
element.style.color = "#14b814";

Yukarıdaki gibi farklı metodlar kullanarak isteğimize göre (marginLeft, href, target, className, vs.) element özelliklerini değiştirebiliriz.

DİNAMİK ELEMENT OLUŞTURMA

Bu başlığımızda javascript kodları ile HTML sayfamıza dinamik olarak element ekleme işlemlerini ele alacağız. Yeni bir element oluşturarak başlayalım, aşağıdaki kod ile ilk olarak değiken tanımladım ve ardından "a" isimli yeni bir element oluşturdum. Daha sonra konsola yazdıracağım kodumu girdim

Kod:
const newlink = documént.createElement("a");
console.log(newlink);

Şimdi bu elementimizi dinamik hale getirelim. Örneğin elementimize "id" ekleyelim. id değerimiz "clear-todos" olsun. Bunun için aşağıdaki kodu yazabiliriz,

Kod:
newlink.id = "clear-todos";

Aynı şekilde elementimize "classname" de ekleyebiliriz. Classname'imiz "btn btn danger" olsun,

Kod:
newlink.className = "btn btn danger";

Yine elementimize yönlendirme kodu da ekleyebiliriz. Örneğin elementimize tıklandığında "google.com" adresine yönlendirme yapsın,

Kod:
newlink.href = "google.com";

Bu şekilde elementimize, etiketimize özellikler atadık. Şimdi elementimize bir de text atayalım. Bunun için createTextNode metodunu kullanacağız. Örneğin textimiz "Farklı sayfaya Git" olsun. Burada elementimizdeki diğer etiketlerin silinmemesi için varolan etiketlere ekleme yapmak istediğimi belirtmem gerekiyor. Bunun için de "appendChild" metodunu kullanacağız. Bu şekilde eklediğimiz text, varolan textlerin altına eklenmiş olacak

Kod:
newlink.appendChild(documént.createTextNode("Farklı Sayfaya Git"));

Artık dinamik elementimizi oluşturmuş olduk. Bu elementi HTML'deki farklı classlar içerisine ekleyebiliriz.

DİNAMİK ELEMENT SİLME

Bu başlığımızda HTML sayfamızdaki dinamik elementi silme işlemini ele alacağız. Öncelikle silmek istediğimiz dinamik elementi barındıran etiketi ve kod öbeğini seçmemiz gerekiyor. Bunun için daha önce işlediğimiz "querySelector" metodunu kullanacağız. Bu seçim işlemini "class" değeri üzerinden yapmaya çalışalım. Örneğin silmek istediğimiz element "li" etiketinin "javascript" classname'li elementinde varolsun. Bunun için kodumuzu aşağıdaki gibi yazıp elementimizi seçiyoruz,

Kod:
const list = documént.querySelector("li.javascript");

etiketimizi yukarıdaki gibi seçtikten sonra bu etiket içerisindeki silmek istediğimiz dinamik elementi "Remove" metodunu kullanarak sileceğiz. Yukarıdaki kodun altına aşağıdaki kodu yazdığımızda "javascript" classnameli "li" etiketimizin 3. indexindeki elementi silmiş oluyoruz,

Kod:
list[3].remove();

ELEMENTLERİ DEĞİŞTİRME

Bu başlığımızda seçtiğimiz elementleri birbirleriyle değiştirme işlemlerini ele alacağız. Örneğin seçeceğimiz element "h1" elementi olsun ve bu elementi birazdan oluşturacağımız "h2" elementi ile değiştireceğimizi varsayalım. Ve ilk olarak değiştireceğimiz h1 elementinin bulunduğu etiketi seçmemiz gerekiyor. Bu etiketimizi className değeri "etiket" olsun. Ve bu className değeri ile etiketimizi seçelim Bunun için aşağıdaki kodu yazıyoruz.

Kod:
const secim = documént.querySelector(".etiket");

Şimdi "h1" elementimizi seçmemiz gerekiyor. Bu elementimizin id'si "javascript" olsun Bu nedenle ilk olarak "javascript" id'li elementimizi seçeceğiz. Bunun için aşağıdaki kodu yazıyoruz,

Kod:
const oldElement = documént.querySelector("#javascript");

Şimdi seçtiğimiz elementi değiştireceğimiz, yeni h2 elementimizi oluşturalım.Ve bu elementimize "js" isminde bir classname ve "jsid" değerinde bir id atayalım,

Kod:
const newElement = documént.createElement("h2");
newElement.className = "js";
newElement.id = "jsid";

Şimdi ise bu iki elementi değiştirecek kodu yazalım. "h1" elementini "h2" elementi ile değiştireceğimiz ve değiştireceğimiz elementin "secim" değişkeni ile tanımlanan etiket içerisinde olması sebebiyle kodumuzu aşağıdaki şekilde yazıyoruz,

Kod:
secim.replaceChild(newElement, oldElement);

EVENT LİSTENERS

Bu başlığımızda javascriptte oluşan eventleri işleyecek ve bunları javascript üzerinde yakalayacağız. Ben bu başlığı anlatırken elimdeki hazır scripti kullanacağım.

İlk olarak input üzerinde oluşan eventimizi yakalayalım. Benim seçeceğim Inputun id'si "filter" bu nedenle inputumu id üzerinden aşağıdaki gibi seçiyorum

Kod:
const filterInput = documént.getElementById("filter");

Inputumu seçtikten sonra bu inpuT üzerinde oluşan eventi yakalayabiliriz. Örneğin biz bu inputa bi şeyler yazmaya başladığımızda "focus eventi" oluşuyor ve bu eventi console üzerinde görüntüleyebiliyoruz. Şimdi inputumuzda focus eventi oluştuğunda console üzerinde "event oluştu" şeklinde bir yazı göndermek isteyelim. Aşağıdaki kodu yazıyoruz,

Kod:
const filterInput = documént.getElementById("filter");
filterInput.onfocus = function(){
console.log("Event Oluştu");}

Biz input alanına tıkladığımız anda eventimiz oluşacağı için yukarıdaki kodumuz da aynı anda çalışacak ve konsola "Event oluştu" şeklinde bir mesaj gönderecek.

Şimdi oluşan eventimizin özelliklerini görüntüleyelim. Bunun için yine yukarıdaki kodumuzu kullanabiliriz. Burada " function() " içerisine "e" ya da "event" yazarak bu özellikleri görüntüleyebiliriz. Kodumuz aşağıdaki gibi olacak,

Kod:
const filterInput = documént.getElementById("filter");
filterInput.onfocus = function(e){
console.log(e);}

Yukarıdaki kodu kaydedip sayfayı yeniledikten ve tekrar inputumuza tıkladıktan sonra aşağıdaki gibi event özelliklerimizin console ekranına yazıldığını görebiliriz.



Şimdi eventimizin çeşitli özelliklerini görüntüleyelim. mesela oluşan eventin hangi tipte olduğunu görmek için yukarıdaki kodumuzun altına aşağıdaki kodu yazabiliriz. Ardından konsolu tekrar görüntülediğimizde eventimizin tipini görebilmiş olacağız,

Kod:
 console.log(e.type);

Aynı şekilde eventin nerede olutuğu bilgisini de target özelliğinden görebiliriz.

Kod:
console.log(e.target);

Bunların dışında daha bir çok event özelliği bulunmakta lakin ben örnek olması açısından birkaçını verdim.

DOM CONTENT LOADED EVENTİ

Bu event, doküman yüklendiği zaman oluşur. Yani sayfadaki tüm içerikler yüklendikten sonra bu event oluşacaktır. Bu eventin oluşumunu aşağıdaki kod ile yakalayabiliriz.

Kod:
documént.addEventListener("DOMContentLoaded",run);
function run(e){ console.log("Event oluştu");}

KLAVYE EVENTLARI

Keypress Eventı

Bu event klavyede herhangi rakam, sembol veya harf tuşuna basıldığında çalışan eventtir. Bu başlığımızda bu eventi yakalayalım. Şimdi eventimizi oluşturup fonksiyon atadıktan sonra döküman üzerinde herhangi bir rakama veya harfe bastığımızda console üzerinde "Event Oluştu" şeklinde bir yazı yazdıralım.

Kod:
documént.addEventListener("keypress",run);
function run(e){ console.log("Event oluştu");}

Kodumuzu kaydedip doküman üzerinde herhangi bir tuşa bastığımızda console üzerinde yazdırmak istediğimiz text görünecektir.

Keydown Eventi

Bu event keypress eventının aksine klavye üzerindeki herhangi bir tuş tuşlandığı zaman çalışacaktır. Bunun için örnek olarak aşağıdaki kodu kullanabiliriz.

Kod:
documént.addEventListener("keydown",run);
function run(e){ console.log("Event oluştu");}

Örneğin tuşladığımız her tuşun console üzerinde görünmesini istiyorsak "e.key" metodunu kullanabiliriz. Bu metodumuzu yukarıdaki kodumuzla aşağıdaki gibi birleştirelim,

Kod:
documént.addEventListener("keydown",run);
function run(e){ console.log("Event oluştu");
console.log(e.key);}

Kodumuzu kaydettikten sonra herhangi bir tuşa bastığımızda hem bastığımız tuş ekranda görünecek hemde mesajımızı ekranda göebileceğiz,



Keyup Eventi

Bu event basılan bir tuş bırakıldığında çalışır. Örneğin "a" tuşuna basılı tutarken event oluşmazken, "a" tuşundan elimizi çektiğimiz anda event oluşacaktır. Örnek kullanımı aşağıdaki gibidir

Kod:
documént.addEventListener("keyup",run);
function run(e){ console.log("Event oluştu");}
MOUSE EVENTLERİ

Click Eventi

Bu event doküman üzerinde tıklama yapıldığı zaman oluşur. Örnek kullanımı aşağıdaki gibidir,

Kod:
documént.addEventListener("click",run);
function run(e){ console.log("Event oluştu");}

Double Click Eventi

Bu event, doküman üzerine çift tıklama yapıldığında oluşan eventtir. Aşağıdaki gibi kullanılır,

Kod:
documént.addEventListener("dblclick",run);
function run(e){ console.log("Event oluştu");}

Mouse Down Eventi

Bu event, doküman üzerine mouse ile basılı tuttuğumuz zaman oluşan eventtir. Bu bağlamda click eventiyle pek bir farkı yoktur. Örnek kullanımı aşağıdaki gibi,

Kod:
documént.addEventListener("mousedown",run);
function run(e){ console.log("Event oluştu");}

Mouse Up Eventi

Bu event, doküman üzerinde tıklama yaptığımızda tıklamayı bıraktığımız anda oluşan eventtir. Bu anlamda keyup eventine benzetebiliriz. Örnek kullanımı aşağıdaki gibidir,

Kod:
documént.addEventListener("mouseup",run);
function run(e){ console.log("Event oluştu");}

Mouse Over Eventi

Bu event, doküman üzerine imleç ile gelindiği zaman oluşan eventtir. Tıklama gerektirmez ve doküman içerisinde farklı elementlere imleç ile getirildiği zaman tekrar tekrar oluşur. Örnek kullanımı aşağıdaki gibidir,

Kod:
documént.addEventListener("mouseover",run);
function run(e){ console.log("Event oluştu");}

Mouse Out Eventi

Bu event, mouse imleçini belirtilen doküman üzerinden çıkarttığımız zaman oluşan eventtir. Bu event de oluşması için tıklama gerektirmez ve yine doküman içerisinde farklı elementlere imleç ile getirildiği zaman tekrar tekrar oluşur. Örnek kullanımı aşağıdaki gibidir,

Kod:
documént.addEventListener("mouseout",run);
function run(e){ console.log("Event oluştu");}

Mouse Enter Eventi

Bu event, mouse imleci ile belirtilen döküman içerisine gelindiğinde oluşur "mouse over eventi"nden farklı olarak belirtilen doküman içindeki farklı elementler arasında dolaşılsa bile yalnızca 1 defa çalışır. Yani belirtilen dokümana ya da elemente imleç ile gelindiğinde 1 defa çalışır ve aynı element ya da döküman içerisindeki farklı bir elementte tekrar çalışmaz. Örnek kullanımı aşağıdaki gibidir.

Kod:
documént.addEventListener("mouseenter",run);
function run(e){ console.log("Event oluştu");}

Mouse Leave Eventi

Bu event, mouse imlecini belirtilen döküman ya da elementten dışarı çıkarttığımız anda belirtilen döküman dışında yalnızca 1 defaya mahsus olmak üzere oluşur.Tekrar oluşması için belirtilen dökümana ya da elemente tekrar girip çıkmayı gerektirir. "Mouse out Eventi" ile arasındaki fark budur. Örnek kullanımı da aşağıdaki gibidir

Kod:
documént.addEventListener("mouseleave",run);
function run(e){ console.log("Event oluştu");}

INPUT EVENTLERİ

Focus Eventi

Bu event, daha önce de işlediğimiz gibi input alanına mouse ile tıkladığımız anda oluşur. Örnek kullanımını aşağıdaki gibi gösterebiliriz,

Kod:
filter.addEventListener("focus",run);
function run(e){ console.log(e.type);}

Blur Eventi

Bu event, input alanından çıkıp mouse ile input alanı dışında tıklama yapıldığında oluşur. Örnek kullanımı aşağıdaki gbidir,

Kod:
filter.addEventListener("blur",run);
function run(e){ console.log(e.type);}

Paste Eventi

Bu event, input alanına "yapıştır" özelliği ile herhangi bir metin yapıştırıldığında oluşan eventtir. Örnek kullanımı aşağıdaki gibidir,

Kod:
filter.addEventListener("paste",run);
function run(e){ console.log(e.type);}

Copy Eventi

Bu event, input alanından herhangi bir metin kopyalandığı zaman oluşur. Örnek kullanımı aşağıdaki gibidir,

Kod:
filter.addEventListener("copy",run);
function run(e){ console.log(e.type);}

Cut Eventi

Bu event, input alanındaki metni kesme işlemi ile aldığımız zaman oluşan eventtir. Örnek kullanımı aşağıdaki gibidir,

Kod:
filter.addEventListener("cut",run);
function run(e){ console.log(e.type);}

Select Eventi

Bu event, input alanındaki metni seçtiğimizde oluşan eventtir. Örnek kullanımını aşağıdaki gibi gösterebiliriz,

Kod:
filter.addEventListener("select",run);
function run(e){ console.log(e.type);}

EVENT CAPTURING VE EVENT BUBBLING ÖZELLİKLERİ

Event Bubbling Özelliği

Bu özellik, bir element üzerinde herhangi bir event oluşması durumunda bu eventi üstündeki perlere taşıyarak kabarcıklanma oluşturur. Buna da "Event Bubbling Özelliği" denir. Yani bir element üzerinde oluşan event bunu üstündeki elementlere de taşıyarak orada da event oluşmasını sağlar.

Event Capturing (Delegation) Özelliği

Bu özellik, event bubbling özelliğinin aksine herhangi bir elementte oluşan eventin, o elementin altındaki elementlerde de oluşmasına denir. Mesela bir "div" elementi düşünün. Bu elementin altında "h1", "li" gibi farklı farklı elementler de mevcut. ve biz bu "div" elementinde bir event oluşturduğumuzda bu event, elementimizin altındaki "h1" ve "li" elemenlerinde de oluşacaktır.

TARAYICILARIN DEPOLAMA ALANLARI

Bir sayfada herhangi bir veritabanı kullanılmıyorsa verileri depolamak için "session storage" veya "local storage" kullanılabilir. Şimdi bu başlığımızda bunlardan bahsedelim.

Session Storage

Session storage'de, oturum açık kaldığı sürece depolanan veriler burada kalırken oturumu kapattığımız anda depolanan veriler silinir. Bu depolama alanına web geliştirici aracının "Applications" kısmından ulaşabiliriz, burada aşağıda gördüğünüz gibi "key" ve "value" kolonları bizi karşılıyor. Bu kolonlar belirtilen "key"in neye karşılık geldiğini gösteriyor. Yani "key" kısmına "kiraz" yazıp "value" kısmına "meyve" yazmak gibi bir durum. :)



Aslını söylemek gerekirse session storage üzerinde kullancığımız tüm metodlar local storage üzerinde de yapılabilir. Veri kaydetme bağlamında aralarında bir fark olduğu söylenemez. Şimdi verilerimizi tarayıcıların session storage'ine kaydetme işlemlerini ele alalım.

Ben şu anda olayı kavramanız açısından depolama alanlarına manuel olarak veri ekleme işlemlerini göstereceğim. Siz daha önce öğrendiğimiz metodları kullanarak örneğin inputlar oluşturup bu inputlara verilen değeri, bir butona bastığınızda sesion storage'e aktarma işlemini yapabilirsiniz. Ancak ben en sade yoldan anlatımımı yapacağım. Yukarıda verdiğimiz örneği kullanalım. Key kısmına "kiraz" ve value kısmına "meyve" yazdırmaya çalışalım. Bunun için aşağıdaki kodu yazabiliriz,

Kod:
sessionStorage.setItem("kiraz","meyve");

Aynı zamanda eklenen verileri okumak için "getItem()" metodunu,

Kod:
sessionStorage.getItem("kiraz");

Belirtilen verileri silmek için "removeItem()" metodunu,

Kod:
sessionStorage.removeItem("kiraz");

ve tüm verileri silmek için "clear()" metodunu kullanabiliriz.

Kod:
sessionStorage.clear();

Local Storage

Tarayıcıların bu depolama alanında, kullanıcı javascript kodlarından ya da web geliştirici aracı üzerinden depolanan veriyi silmediği müddetçe tarayıcı kapatılsa dahi depolanan veriler saklanır. Bu alana yine tarayıcımızın web geliştirici aracından "Applications" kısmından erişebiliriz.



Local Storage'de de "key" kısmına "kiraz", "value" kısmına ise "meyve" yazdırmak için aşağıdaki gibi bir kod yazabiliriz,

Kod:
localStorage.setItem("kiraz","meyve");

Aynı zamanda eklenen verileri okumak için "getItem()" metodunu,

Kod:
localStorage.getItem("kiraz");

Verileri silmek için "removeItem()" metodunu,

Kod:
localStorage.removeItem("kiraz");

ve tüm verileri silmek için "clear()" metodunu kullanabiliriz.

Kod:
localStorage.clear();

ES6+ ÖZELLİKLERİ

Arrow Function

Fonksiyonları daha kısa şekilde yazabilmemizi sağlayan özelliktir. Bu özelliği kullanarak function ile oluşturduğumuz fonksiyonları daha kısa bir şekilde aşağıdaki gibi yazabiliriz. Aşağıda console üzerine "Merhaba" yazacak fonksiyonu kodladım,

Kod:
const value = () => {console.log("Merhaba");}
value();

Destructing

Array veya objelerin içinden eleman almak için kullanılan basit bir özelliktir. Hemen bir örnek üzerinde gösterelim. Örneğin "array" isimli değişkenimizde "10, 20, 30, 40" olmak üzere 4 tane eleman olsun. Bu elemanların içinden ilk elemanını alıp "number1" isimli değişkenimize tanımlamak istediğimizi varsayalım. Kodumuzu aşağıdaki gibi yazdığımızda arrayimizdeki ilk eleman "number1" isimli değişkenimize tanımlanmış olacaktır.

Kod:
let number1;
array = [10,20,30,40];
[number1] = array;
console.log(number1);

Tabi burada değer atadığımız değişkenleri sırayla arttırabiliriz. Örneğin "number1" değişkeninin yanına bir de "number2" değişkeni ekleyerek ikinci elemanın da "number2" değişkenine atanmasını sağlayabiliriz.

Kod:
array = [10,20,30,40];
[number1,number2] = array;
console.log(number1,number2);

Obje Destructing

Şimdi oluşturduğumuz bir obje içerisinden destructing özelliği ile eleman almaya çalışalım. Aşağıdaki gibi bir obje oluşturuyorum,

Kod:
const obje = {a:10,b:20,c:30,d:40};

Bu objenin içerisinden sıraya bakılmaksızın eleman alabiliriz. Burada dikkat etmemiz gereken nokta, elemanları atadığımız değişken adının objelerdeki değişken adıyla aynı olması. Örneğin "10" elemanını bir değişkene atayacaksak o değişkenin adı "a" olmalı. Ben aşağıdaki gibi bir kod yazarak "10","30" ve "40" elemanlarını değişkenlere almak istiyorum. Aşağıdaki kod ile elemanlarımı "a", "c" ve "d" değişkenlerine atadım.

Kod:
const obje = {a:10,b:20,c:30,d:40};
const {a,c,d} = obje;
console.log(a,c,d);

Function Destructing

Şimdi fonksiyona atanan değerleri farklı değişkenlere almaya çalışalım. Örneğin aşağıdaki gibi bir fonksiyon oluşturup değerlerimi atıyorum,

Kod:
const langs = () => ["10","20","30"];

Ardından bu elemanları sırasıyla olacak şekilde 3 farklı değişkene atamak için aşağıdaki kodu yazabiliriz,

Kod:
const [lang1,lang2,lang3] = langs();

Ardından kodlarımızı konsoal yazdıracak olan kodu da ekledikten sonra totalde kodlarımız aşağıdaki gibi olacaktır;

Kod:
const langs = () => ["10","20","30"];
const [lang1,lang2,lang3] = langs();
console.log(lang1,lang2,lang3);

Spread Operator

Bu operatör arraye atanan değerleri yan yana basit şekilde yazmamızı sağlıyor. Hemen bir örnekle gösterelim. Örneğin aşağıdaki gibi bir arrayimiz olduğunu farz edelim,

Kod:
const array = ["Python","java","Javascript","Css"];

Yukarıdaki arrayimizin değerlerini tek tek aralarında boşluk olacak şekilde console'a yazdırmak istediğimizde aşağıdaki gibi bir kod yazabiliriz,

Kod:
console.log(...array);

Bu şekilde arrayimizdeki değerleri basitçe console üzerine tek tek yazdırmış olduk

For In Döngüleri

Bu döngü içinde bulunan nesne özelilklerine erişmek için kullanılabilir. Hemen bir örnekle anlatalım. Örneğin aşağıdaki gibi bir array'imiz mevcut

Kod:
const langs = ["Java","Javascript","Css","Python"];

Şimdi for in döngüsü ile bu arrayimizin özelliklerine bakacağız. Bunun için aşağıdaki kodu yazıyoruz

Kod:
for(özellik in langs){console.log(özellik);}

Yukarıdaki kodları birleştirdikten sonra console ekranında yalnızca arrayimizdeki değerlere ait indexler görüntülenecek. Herhangi bir değeri bu döngüyle görüntüleyemiyoruz. Yine aynı şekilde bu sefer de bir obje oluşturalım. Ve bu objede bu döngü kullanılarak ne görüntülendiğini görelim. Aşağıdaki gibi bir obje oluşturuyorum,

Kod:
const obje = {name: "black", surname: "coder", age: 50};

Ardından aşağıdaki kodu yazalım

Kod:
for(özellik in obje)
{console.log(özellik);}

Yukarıdaki kodlarla beraber console ekranımızda aşağıdaki gibi bir görüntü oluşacaktır. Gördüğünüz gibi yalnızca objeye ait özellikler consoleda listelendi

fH68QJ.png


For Of Döngüleri

Bu döngü de for in döngüsünün aksine özellikler yerine özelliklere atanan değerler üzerinde gezinmeyi sağlar ve objeler üzerinde kullanılamaz. Hemen bir örnekle anlatalım. Örneğin aşağıdaki gibi bir arrayimiz olsun,

Kod:
const langs = ["Java","Javascript","Css","Python"];

Ardından aşağıdaki kodu yazarak for of döngümüzü oluşturalım

Kod:
for(değer of langs){console.log(değer);}

Döngümüzü oluşturup console üzerine yazdırdığımızda aşağıdaki gibi arrayimizde bulunan değerlerin listelendiğini görebiliriz

PO7RbH.png


MAP METODU

Map metodunda "key" ve "value" olmak üzere iki değer bulunur. Bu değerler birbirlerini karşılarlar. Her key birbirini karşılayan bir value değeri bulundurur. Aşağıdaki kodlar ile bir map oluşturabiliriz

Kod:
let MyMap = new Map();

Şimdi key ve value değerlerini verelim. Aşağıdaki gibi 3 tane key oluşturuyorum,

Kod:
const key1 = "black";
const key2 = "coder";
const key3 = "tht";

Şimdi bu değerleri set fonksiyonu ile mape ekleyelim. Aşağıda da gördüğünüz gibi ilk olarak key'i ve ona karşılık gelen value'yu yazıyorum

Kod:
MyMap.set(key1,"1. anahtarın value'si");
MyMap.set(key2,"2. anahtarın value'si");
MyMap.set(key3,"3. anahtarın value'si");

Şimdi ise oluşturduğumuz key değerlerinden herhangi birini almayı gösterelim. Örneğin ben yukarıdaki keylerim arasından "key2"nin değerini almak istiyorum. Bunun için aşağıdaki kodu yazabilirim,

Kod:
console.log(MyMap.get(key2));

Şimdi map içerisinde forEach döngüsü ile gezinme olayını ele alalım. Aşağıya yeni bir map oluşturuyorum,

Kod:
let şehir = new Map();

const key1 = "İstanbul";
const key2 = "Antalya";
const key3 = "Ankara";

şehir.set(key1,"Marmara Bölgesindedir");
şehir.set(key2,"Akdeniz bölgesindedir");
şehir.set(key3,"İç Anadolu Bölgesindedir");

Şimdi bu map içerisinde forEach döngüsü ile gezineceğimiz kodumuzu yazalım.

Kod:
şehir.forEach(function(value,key) {
console.log(key,value); 
})

[umg]https://i.resimyukle.xyz/2e348U.png[/img][/Map metodunun daha birçok özelliği bulunmakta ben mantığı kavratmak amacında olduğum için bu kadarını yeterli buluyorum.

SETS (KÜMELER)

Setler içerisinde bir değerden yalnızca bir defa bulunur. Örneğin aynı set içerisinde "100" değeri belirtilmişse bu değerden tekrar belirtilmesi halinde belirtilen ikinci değer okunmaz yani "100" değeri 2 defa belirtilse bile 1 defa belirtilmiş varsayılır. Setleri arraylere benzetebiliriz. Setimizi aşağıdaki gibi oluşturuyoruz,

Kod:
const MySet = new Set();

Setimize değer vermek içinse "setAdi.add(eklenecek_deger);" şablonunu kullanıyoruz. her veri tipinden değer ekleyebiliriz. Örneğin ben aşağıdaki gibi değerler ekledim,

Kod:
MySet.add("Türkiye");
MySet.add(1000);
MySet.add({a:10,b:20});
MySet.add([1,2,3]);

Aynı şekilde setlerin de kendi özellikleri mevcut. Örneğin "setAdi.delete(silinecek_deger);" metodu ile belirtilen değeri silebiliriz. Aynı şekilde diğer özellikler de kullanılabilir.



[A'dan Z'ye] Javascript Öğreniyoruz 2.Partı'na burada nokta koyuyorum. 3.Partta görüşmek dileğiyle...

[A'dan Z'ye] Javascript Öğreniyoruz #1 Konusuna Gitmek İçin;

https://www.turkhackteam.org/javascript/1904171-adan-zye-javascript-ogreniyoruz-1-a.html

[A'dan Z'ye] Javascript Öğreniyoruz #3 Konusuna Gitmek İçin;

https://www.turkhackteam.org/javascript/1915486-adan-zye-javascript-ogreniyoruz-3-a.html#post9078751
 
Son düzenleme:

Sheldon

Katılımcı Üye
13 Ocak 2018
939
134
-
Sen bekle sen yarın ilk partını sonraki gün 2. Partını çevireceğim bitiyor az kaldı ingilizce yapacağım :)
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.