JavaScript Nesne Oluşturucuları
Örnek
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
Oluşturucu işlevlerini ilk harf büyük harfle adlandırmak iyi bir uygulama olarak kabul edilir.
Nesne Tipleri (Ozalitler) (Sınıflar)
Önceki bölümlerden örnekler sınırlıdır. Yalnızca tek nesneler oluştururlar.
Bazen aynı "tür"den çok sayıda nesne yaratmak için bir " taslak "a ihtiyaç duyarız.
Bir "nesne türü" yaratmanın yolu, bir nesne oluşturucu işlevi kullanmaktır .
Yukarıdaki örnekte function Person()
, bir nesne oluşturucu işlevidir.
Aynı türdeki nesneler, yapıcı işlevi new
anahtar sözcükle çağrılarak oluşturulur:
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
Bu Anahtar Kelime
JavaScript'te denilen şey this
, kodun "sahibi" olan nesnedir.
Bir nesnede kullanıldığında değeri this
, nesnenin kendisidir.
Bir yapıcıda işlevin this
bir değeri yoktur. Yeni nesnenin yerine geçer. Yeni bir nesne oluşturulduğunda değeri this
yeni nesne olacaktır.
this
Bunun bir değişken olmadığını unutmayın . Bu bir anahtar kelimedir. değerini değiştiremezsiniz this
.
Bir Nesneye Özellik Ekleme
Mevcut bir nesneye yeni bir özellik eklemek kolaydır:
Örnek
myFather.nationality = "English";
Mülk, myFather'a eklenecektir. Anneme değil. (Başka herhangi bir kişi nesnesine değil).
Bir Nesneye Yöntem Ekleme
Mevcut bir nesneye yeni bir yöntem eklemek kolaydır:
Örnek
myFather.name = function () {
return this.firstName + " " + this.lastName;
};
Yöntem, myFather'a eklenecektir. Anneme değil. (Başka herhangi bir kişi nesnesine değil).
Bir Yapıcıya Özellik Ekleme
Mevcut bir nesneye yeni bir özellik eklediğiniz gibi, bir nesne yapıcısına yeni bir özellik ekleyemezsiniz:
Örnek
Person.nationality = "English";
Bir kurucuya yeni bir özellik eklemek için onu kurucu işlevine eklemelisiniz:
Örnek
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
Bu şekilde nesne özellikleri varsayılan değerlere sahip olabilir.
Bir Yapıcıya Yöntem Ekleme
Yapıcı işleviniz ayrıca yöntemleri de tanımlayabilir:
Örnek
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.name = function() {
return this.firstName + " " + this.lastName;
};
}
Var olan bir nesneye yeni bir yöntem eklediğiniz gibi, bir nesne oluşturucusuna yeni bir yöntem ekleyemezsiniz.
Bir nesne oluşturucuya yöntemler ekleme, yapıcı işlevi içinde yapılmalıdır:
Örnek
function Person(firstName, lastName, age, eyeColor) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.eyeColor = eyeColor;
this.changeName = function (name) {
this.lastName = name;
};
}
changeName() işlevi, kişinin lastName özelliğine name değerini atar.
Şimdi Deneyebilirsiniz:
myMother.changeName("Doe");
JavaScript, bunu myMother ile "değiştirerek" hangi kişiden bahsettiğinizi bilir .
Yerleşik JavaScript Oluşturucuları
JavaScript, yerel nesneler için yerleşik kuruculara sahiptir:
new String() // A new String object
new Number() // A new Number object
new Boolean() // A new Boolean object
new Object() // A new Object object
new Array() // A new Array object
new RegExp() // A new RegExp object
new Function() // A new Function object
new Date() // A new Date object
Nesne Math()
listede yok. Math
küresel bir nesnedir. Anahtar new
kelime üzerinde kullanılamaz
Math
.
Biliyor musun?
Yukarıda görebileceğiniz gibi JavaScript, ilkel veri türlerinin String
, Number
ve Boolean
. Ancak karmaşık nesneler yaratmak için hiçbir neden yoktur. İlkel değerler çok daha hızlıdır:
yerine dize değişmezlerini ""
kullanın new String()
.
yerine sayı değişmezlerini 50
kullanın new Number()
.
yerine boole değişmezlerini true / false
kullanın new Boolean()
.
Bunun yerine nesne değişmezlerini {}
kullanın new Object()
.
[]
Bunun yerine dizi değişmezlerini kullanın new Array()
.
Bunun yerine kalıp değişmezlerini /()/
kullanın new RegExp()
.
Bunun yerine işlev ifadelerini () {}
kullanın new Function()
.
Örnek
let x1 = ""; // new primitive string
let x2 = 0; // new primitive number
let x3 = false; // new primitive boolean
const x4 = {}; // new Object object
const x5 = []; // new Array object
const x6 = /()/ // new RegExp object
const x7 = function(){}; // new function
Dize Nesneleri
Normalde, dizeler ilkel olarak oluşturulur: firstName = "John"
Ancak dizeler, anahtar kelime kullanılarak nesneler olarak da oluşturulabilir new
:
firstName = new String("John")
JS Dizeleri bölümünde dizelerin neden nesne olarak oluşturulmaması gerektiğini öğrenin .
Sayı Nesneleri
Normalde sayılar ilkel olarak oluşturulur: x = 30
Ancak sayılar, anahtar kelime kullanılarak nesneler olarak da oluşturulabilir new
:
x = new
Number(30)
Sayıların neden nesne olarak oluşturulmaması gerektiğini JS Numaraları bölümünde öğrenin .
Boole Nesneleri
Normalde, boole'ler ilkel olarak oluşturulur: x =
false
Ancak boolean'lar, anahtar kelime kullanılarak nesneler olarak da oluşturulabilir new
:
x = new Boolean(false)
Booleanların neden nesne olarak oluşturulmaması gerektiğini JS Boolean bölümünde öğrenin .