JavaScript ile geliştirme yaparken nesneleri (object) sürekli olarak kullanıyoruz. Gerek JavaScript ile bize verilen nesneler ve gerekse bizim kendi oluşturduğumuz nesneler farklı özellikler ile gelmektedir. Uygulama geliştirirken bir özelliğin nesnede olup olmadığına karar vermemiz gerekebilir. Bu durumda elimizde karşılaştırma için farklı yöntemler bulunmaktadır.
Bu yazımızda JavaScript nesnelerinin (object) özelliklerini nasıl tesip edeceğimizi 3 farklı yol ile göreceğiz. Mesela elimizde bulunan ogrenci nesnesi içerisinde notOrtalamasi özellliği (properties) var mı? İşlem yaparken ihtiyacımız olabilir.
hasOwnProperty Yöntemi ile bir nesnenin özelliklerini tespit etme. in operatörü kullanılarak bir objenin özelliğinin olup olmadığını öğrenme. undefind ile veri türü üzerinden bir nesnenin istenilen özelliğine sahip olup olmadığını tespit etme.
hasOwnProperty Yöntemi İle Nesne Özelliğini Tespit Etme
JavaScript ile bir nesne oluşturulduğunda nesnenin sahip olduğu bir çok metod olabilir. Bunlardan bir tanesi hasOwnProperty metodudur.
hasOwnProperty Nedir?
Bu metod bir nesnenin (JavaScript Object) belirtilen özelliğe (property) sahip olup olmadığını denetler. Eğer bu özellik varsa true, yoksa false değerini geri döner. hasOwnProperty metodu, eğer özellik var ve null veya undefined olsa dahi true değerini döner. Eğer özellik yoksa false değeri geri dönecektir.
hasOwnProperty metodu, miras aldığı özellikleri eğer kullanılmadıysalar yok kabul edecektir.
Kullanımı
nesne.hasOwnPorperty('özellik')
şeklindedir.
JavaScript hasOwnProperty Metodunun Kullanımı
let ogrenci = {
isim: 'Ahmet Koşar',
yas: 15,
notOrtalamasi: 93,
sehir: 'Kocaeli',
ilgiAlanlari: null,
okulDerecesi: undefined
}
/* Şimdi ogrenci nesnesinin özellikleri var mı hasOwnProperty ile bulmaya çalışalım */
ogrenci.hasOwnProperty('isim'); // true değeri döner
ogrenci.hasOwnProperty('sehir'); // true değeri döner
ogrenci.hasOwnProperty('ilgiAlanlari'); // true değeri döner
ogrenci.hasOwnProperty('telefonNo'); // false degeri döner
Yaptığımız örnekte görüldüğü gibi eğer bir özellik tanımlandı ise hasOwnProperty bize özellik değerine bakmadan true değeri döner. Aksi halde false değeri dönecektir.
in Oparetörü İle Nesne Özelliğini Bulma
JavaScript uygulamaları yazarken nesne özelliği var mı sorusunun cevabını in operatörü ile de bulabiliriz. in operatörü bize bir nesnenin belirtilen özelliğe sahip olup olmadığını söyler. hasOwnProperty metodundan farklı olarak nesnenin miras aldığı özellikleri de araştırır. Bu özelliklere değer atanıp atanmaması önemli değildir.
in operatörü nesneler ile çalışır. Bu nedenle in operatörü kullanılırken sağ tarafından mutlaka bir nesne olmalıdır. Aksi halde hata oluşur.
Kullanımı
'özellik' in nesne
şeklindedir.
in Operatörü İle Nesne Özelliğini Bulma
Şimdi bir kaç örnek ile in operatörünü kullanalım
let isimler = ['Ahmet', 'Hasan', 'Ali', 'Alper', 'Nuri'];
'Ahmet' in isimler; // false geri döner.
0 in isimler; // true geri döner
3 in isimler; // true geri döner
5 in isimler; // false geri döner.
/* in operatörü dizilerde kullanılırken dizi elemanlarının indexleri kullanılır. Dizi elemanlarının değerleri kullanıldığında geri **false** değeri dönecektir.
Yine bir index dizi içerisinde varsa true yoksa false değeri geri döner. */
'lenght' in isimler; // true değeri döner
String kullanırken dikat edilmesi gereken bir durum vardır. O da String nesnesi ile oluşturulmuş bir string kullanmak. Basit string kullanımda hata oluşacaktır.
/* String kullanırken düz string değil bir String nesnesi kullanılmalıdır. Aksi halde hata oluşur*/
let renk = new String('mavi');
'length' in renk; // true değeri dönderir.
/* Eğer String nesnesi oluşturmadan kullanırsak hata oluştur */
'length' in 'kırmızı'; // hata oluşur.
Math nesnesi ile bir örnek yapalım.
'PI' in Math; // true değeri döner
`pi' in Math; // false değer döner
Eğer bir özelliği delete ile nesneden silersek, o özelliği in ile arattığımızda false değeri alırız.
Yine eğer bir değer undefined ise, in operatörü bize true değerini dönderir.
undefined Değeri ile Nesne Özelliği Denetleme
Bir nesnenin özelliği yoksa, o özellik istendiğinde undefined olarak bize dönmektedir.
let musteri = {
isim: 'Ahmet Demir',
yas: 33,
sehir: 'İstanbul'
}
console.log(musteri.isim); // Ahmet Demir yazdırır
console.log(musteri.adres); // undefined yazdırır.
Bu kullanım dikkate alındığında, bir nesnenin özelliğini if ile denetleyebiliriz.
let musteri = {
isim: 'Ahmet Demir',
yas: 33,
sehir: 'İstanbul'
}
if (musteri.adres !== undefined) {
console.log('Adres bilgisi mevcut');
} else {
console.log('Adres bilgisi yok');
}
Aslında bu kullanım bazı durumlarda işimize yarasa da bazen hatalara neden olabilir. Çünkü nesne özelliği oluşturulmuş ve undefined olarak ayarlanmış olabilir. Bu nedenle eğer tam istediğimize uyuyorsa bu seçeneği kullanmak gerekiyor.
JavaScript Nesne Özelliğini Bulma
Bu yazımızda 3 farklı yöntem ile JavaScriptte nesne özelliğini (object property) bulmayı inceledik. hasOwnProperty, in operatörü ve undefined ile karşılaştırma yöntemlerini inceledik. Her yöntemin farklı özellikleri olduğundan tam olarak ihtiyacımızı karşılayan yöntemi kodumuza uygulamalıyız.
Yorum ve sorularınızı yorumlara ekleyerek bize ve okuyucularımıza iletebilirsiniz.
