HAZIRLAYAN : MEMET ORAKCİ 22430070024
Başlamadan önce, JavaScript'te objelerin ve prototiplerin ne olduğunu anlamak için birkaç temel kavramı açıklamak istiyorum. Kavramları öğrendikten sonra javascript ile obje ve prototipleri göreceğiz.
Temel Kavramlar
JavaScript'te verilerin farklı tipleri vardır. Bazı temel veri tipleri şunlardır:
string (metin)
number (sayı)
boolean (mantıksal)
null (boş değer)
undefined (tanımlanmamış)
object (nesne)
symbol (sembol)
Değişkenler, değerlerin depolandığı ve değiştirilebildiği isimlendirilmiş bellek alanlarıdır. Bir değişken oluşturmak için var, let veya const anahtar kelimeleri kullanılır.
var x = 10; // Değişken oluşturma ve başlatma
x = 20; // Değişken değerini değiştirme
Fonksiyonlar, tekrar kullanılabilir kod bloklarını temsil eder. Bir fonksiyon, belirli bir görevi yerine getirmek için kullanılır ve parametrelerle çağrılır.
function hello(name) {
console.log("Merhaba " + name);
}hello("Ali"); // "Merhaba Ali" yazdırır
JavaScript'te objeler, özellikleri ve yöntemleri olan karmaşık veri yapılarıdır. Bir nesne, anahtar/değer çiftleri olarak da bilinen özelliklerden oluşur.
var person = {
firstName: "Ali",
lastName: "Yılmaz",
age: 25,
fullName: function() {
return this.firstName + " " + this.lastName;
}console.log(person.firstName); // "Ali"
console.log(person.fullName()); // "Ali Yılmaz"
Yukarıdaki örnekte, person adlı bir nesne oluşturduk. firstName, lastName ve age özelliklerine sahiptir. Ayrıca, fullName adlı bir yönteme de sahiptir.
Özelliklerin ve yöntemlerin erişimi noktası notasyonu veya köşeli parantez notasyonu kullanılarak yapılabilir.
console.log(person.firstName); // nokta notasyonu kullanarak özellik erişimi
console.log(person["firstName"]); // köşeli parantez notasyonu kullanarak özellik erişimi
Ayrıca, bir obje değişkenine erişim noktası notasyonu veya köşeli parantez notasyonu kullanarak özellikler eklenebilir veya değiştirilebilir.
person.city = "İstanbul"; // Yeni özellik ekleme
person["country"] = "Türkiye";
JavaScript'teki her nesne, bir prototip tarafından tanımlanan özellikleri ve yöntemleri de miras alır. Prototipler, nesne oluşturmak için kullanılan fonksiyonlara atanır ve bu fonksiyonlar "kurucu fonksiyonlar" olarak adlandırılır.
function Person(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}Person.prototype.fullName = function() {
return this.firstName + " " + this.lastName;
}var person1 = new Person("Ali", "Yılmaz", 25);
var person2 = new Person("Ayşe", "Kara", 30);
console.log(person1.fullName()); // "Ali Yılmaz"
console.log(person2.fullName()); // "Ayşe Kara"
Yukarıdaki örnekte, Person adlı bir kurucu fonksiyon oluşturduk ve firstName, lastName ve age özelliklerine sahip bir nesne oluşturduk. Ayrıca, fullName adlı bir yöntemi Person prototipi ile tanımladık. Daha sonra, new anahtar kelimesini kullanarak Person fonksiyonunu kullanarak person1 ve person2 adlı iki nesne oluşturduk ve fullName yöntemini çağırdık.
JavaScript'teki her nesne, bir prototip zincirine sahiptir. Eğer bir nesne üzerinde bir özellik veya yöntem çağrısı yapıldığında, önce nesnenin kendisinde aranır, eğer bulunamazsa prototipinde aranır. Bu işlem, prototip zincirinin en tepesinde Object.prototype nesnesi ile sonuçlanır. Bu nedenle, JavaScript'teki tüm nesneler, Object.prototype nesnesinden türemiştir.
function Person(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}var person1 = new Person("Ali", "Yılmaz", 25);
console.log(person1.toString()); // "[object Object]"
Yukarıdaki örnekte, person1 adlı bir nesne oluşturduk ve toString yöntemini çağırdık. Bu yöntem, Person prototipi tarafından tanımlanmadığından, prototip zincirinde Object.prototype nesnesinde aranır ve sonuç olarak [object Object] döndürülür.
JavaScript'te objeler ve prototipler, dilin temel yapı taşlarından biridir ve bunları anlamak, dilin daha karmaşık konularını öğrenmenin önemli bir parçasıdır. Objeler, karmaşık veri yapılarını temsil etmek için kullanılırken, prototipler nesnelerin özellik ve yöntemlerini tanımlar ve nesneler arasında miras ilişkileri oluşturur.