Skip to content

Commit 86a6141

Browse files
gnwxsumn2u
authored andcommitted
translated objects section
1 parent 7d8b113 commit 86a6141

File tree

7 files changed

+316
-0
lines changed

7 files changed

+316
-0
lines changed

tr/objects/README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
layout: editorial
3+
chapter: 9
4+
pageNumber: 56
5+
---
6+
7+
# Bölüm 9
8+
9+
# Objects (Objeler)
10+
11+
JavaScript'te objeler **değişkendir**, çünkü referans objeye işaret eden değerleri değiştiririz. Bunun yerine, bir ilkel değeri değiştirirken, referansını değiştiriyoruz, bu da şimdi yeni değere işaret ediyor ve bu nedenle ilkel **değişmezdir**. JavaScript'in ilkel türleri `true`, `false`, `numbers`, `strings`, `null` ve `undefined`'dir. Herhangi bir diğer değer bir `obje`dir. Objeler, `propertyName`: `propertyValue` çiftleri içerir. JavaScript'te bir `obje` oluşturmanın üç yolu vardır:
12+
13+
1. literal
14+
15+
```javascript
16+
let object = {};
17+
// Evet, sadece bir çift süslü parantez!
18+
```
19+
20+
> _**Not:**_ bu **önerilen** yoldur.
21+
22+
2. nesne yönelimli
23+
24+
```javascript
25+
let object = new Object();
26+
```
27+
28+
> _**Not:**_ Java'ya çok benzer.
29+
30+
3. ve `object.create` kullanarak
31+
32+
```javascript
33+
let object = Object.create(proto[, propertiesObject]);
34+
```
35+
36+
> _**Not:**_ bu, belirtilen prototip nesnesi ve özellikleriyle yeni bir obje oluşturur.

tr/objects/delete.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
chapter: 9
3+
pageNumber: 62
4+
---
5+
6+
# Delete (Silmek)
7+
8+
Bir objeden **bir özelliği** kaldırmak için `delete` özelliği kullanılabilir. Bir özellik silindiğinde, objeden kaldırılır ve erişilemez veya numaralandırılamaz (yani, bir for-in döngüsünde görünmez).
9+
10+
İşte `delete` kullanımı için sözdizimi:
11+
12+
```javascript
13+
delete object.property;
14+
```
15+
16+
Örneğin:
17+
18+
```javascript
19+
let adult = { age: 26 },
20+
child = Object.create(adult);
21+
22+
child.age = 8;
23+
24+
delete child.age;
25+
26+
/* Remove age property from child, revealing the age of the prototype, because then it is not overriden. */
27+
28+
let prototypeAge = child.age;
29+
// 26, because child does not have its own age property.
30+
```
31+
32+
{% hint style="warning" %}
33+
`delete` operatörü sadece bir objenin kendi özellikleri üzerinde çalışır, miras alınan özellikler üzerinde çalışmaz. Ayrıca `configurable` niteliği `false` olarak ayarlanmış özellikler üzerinde de çalışmaz.
34+
{% endhint %}
35+
36+
`delete`operatörü objenin prototip zincirini (**prototype chain**) değiştirmez. Sadece belirtilen özelliği objeden kaldırır ve ayrıca objeyi veya özelliklerini gerçekten yok etmez. Sadece özellikleri erişilemez hale getirir. Bir nesneyi yok etmeniz ve belleğini serbest bırakmanız gerekiyorsa, nesneyi `null` olarak ayarlayabilir veya belleği geri almak için bir çöp toplayıcı kullanabilirsiniz.

tr/objects/enumeration.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
chapter: 9
3+
pageNumber: 63
4+
---
5+
6+
# Enumeration (Numaralandırma)
7+
8+
_Enumeration_ (Numaralandırma), bir objenin özelliklerini yinelemek ve her özellik için belirli bir eylemi gerçekleştirme işlemine atıfta bulunur. JavaScript'te bir objenin özelliklerini numaralandırmanın birkaç yolu vardır.
9+
10+
Bir objenin özelliklerini numaralandırmanın bir yolu, `for-in` döngüsünü kullanmaktır. `for-in` döngüsü, bir objenin enumerable özelliklerini rastgele bir sırayla yineler ve her özellik için bir blok kodunu çalıştırır.
11+
12+
`for in` ifadesi, bir objedeki tüm özellik adlarını yineleyebilir. Numaralandırma, fonksiyonları ve prototip özelliklerini içerecektir.
13+
14+
```javascript
15+
let fruit = {
16+
apple: 2,
17+
orange: 5,
18+
pear: 1,
19+
},
20+
sentence = "I have ",
21+
quantity;
22+
for (kind in fruit) {
23+
quantity = fruit[kind];
24+
sentence += quantity + " " + kind + (quantity === 1 ? "" : "s") + ", ";
25+
}
26+
// The following line removes the trailing comma.
27+
sentence = sentence.substr(0, sentence.length - 2) + ".";
28+
// I have 2 apples, 5 oranges, 1 pear.
29+
```
30+
31+
Bir objenin özelliklerini numaralandırmanın başka bir yolu, `Object.keys()` yöntemini kullanmaktır. Bu yöntem, objenin kendi enumerable özellik adlarının bir diziini döndürür.
32+
33+
Örneğin:
34+
35+
```typescript
36+
let object = {
37+
foo: "bar",
38+
baz: "qux",
39+
};
40+
41+
let properties = Object.keys(object);
42+
properties.forEach(function (property) {
43+
console.log(property + ": " + object[property]);
44+
});
45+
46+
// foo: bar
47+
// baz: qux
48+
```

tr/objects/mutable.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
chapter: 9
3+
pageNumber: 58
4+
---
5+
6+
# Mutable (Değişebilirlik)
7+
8+
Objeler ve primitive (_ilkel_) değerler arasındaki fark, **objeleri değiştirebileceğimiz**, ancak primitive (_ilkel_) değerlerin **değiştirilemez** olmasıdır.
9+
10+
Örneğin:
11+
12+
```javascript
13+
let myPrimitive = "first value";
14+
myPrimitive = "another value";
15+
// myPrimitive şimdi başka bir dizeye işaret ediyor.
16+
let myObject = { key: "first value" };
17+
myObject.key = "another value";
18+
// myObject aynı objeye işaret ediyor.
19+
```
20+
21+
Bir objenin özelliklerini nokta veya köşeli ayraç gösterimi kullanarak ekleyebilir, değiştirebilir veya silebilirsiniz.
22+
23+
```javascript
24+
let object = {};
25+
object.foo = "bar"; // Add property 'foo'
26+
object["baz"] = "qux"; // Add property 'baz'
27+
object.foo = "quux"; // Modify property 'foo'
28+
delete object.baz; // Delete property 'baz'
29+
```
30+
31+
{% hint style="warning" %}
32+
Primitive (_ilkel_) değerler (sayılar ve dizeler gibi) değişmezken, objeler (diziler ve objeler gibi) değişebilirdir.
33+
{% endhint %}

tr/objects/properties.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
chapter: 9
3+
pageNumber: 57
4+
---
5+
6+
# Properties (Obje Özellikleri)
7+
8+
Obje özelliği, `propertyName`: `propertyValue` çiftidir, burada **özellik adı yalnızca bir dize olabilir**. Bir dize değilse, bir dizeye dönüştürülür. Özellikleri bir obje **oluştururken** veya **daha sonra** belirtebilirsiniz. Virgülle ayrılmış sıfır veya daha fazla özellik olabilir.
9+
10+
```javascript
11+
let language = {
12+
name: "JavaScript",
13+
isSupportedByBrowsers: true,
14+
createdIn: 1995,
15+
author: {
16+
firstName: "Brendan",
17+
lastName: "Eich",
18+
},
19+
// Yes, objects can be nested!
20+
getAuthorFullName: function () {
21+
return this.author.firstName + " " + this.author.lastName;
22+
},
23+
// Yes, functions can be values too!
24+
};
25+
```
26+
27+
Aşağıdaki kod, bir özelliğin değerini nasıl elde edeceğinizi gösterir.
28+
29+
```javascript
30+
let variable = language.name;
31+
// variable şimdi "JavaScript" dizesini içeriyor.
32+
33+
variable = language["name"];
34+
// Yukarıdaki satırlar aynı şeyi yapar. Fark, ikincisinin bir özellik adı olarak herhangi bir dize kullanmasına izin vermesidir, ancak okunması daha az kolaydır.
35+
36+
variable = language.newProperty;
37+
// variable şimdi undefined, çünkü bu özelliği henüz atamamıştık.
38+
```
39+
40+
Aşağıdaki örnek, yeni bir özellik **ekleme** veya **mevcut olanı değiştirme** işlemini nasıl yapacağınızı gösterir.
41+
42+
```javascript
43+
language.newProperty = "new value";
44+
// Artık objede yeni bir özellik var. Özellik zaten varsa, değeri değiştirilecektir.
45+
language["newProperty"] = "changed value";
46+
// Yine, özellikleri her iki şekilde de erişebilirsiniz. İlki (noktalama notasyonu) önerilir.
47+
```

tr/objects/prototype.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
---
2+
chapter: 9
3+
pageNumber: 61
4+
---
5+
6+
# Prototype (Prototip)
7+
8+
Her obje, bir prototip objeye bağlıdır ve bu objeden özellikler miras alır. `{}` nesnel literallerden oluşturulan nesneler, JavaScript ile birlikte gelen bir obje olan `Object.prototype`'a otomatik olarak bağlanır.
9+
10+
Bir JavaScript yorumlayıcısı (tarayıcınızdaki bir modül), aşağıdaki kodda olduğu gibi, almak istediğiniz bir özelliği bulmaya çalıştığında:
11+
12+
```javascript
13+
let adult = { age: 26 },
14+
retrievedProperty = adult.age;
15+
// The line above
16+
```
17+
18+
Öncelikle, yorumlayıcı, objenin kendisinin sahip olduğu her özelliği kontrol eder. Örneğin, `adult`'ın yalnızca bir kendi özelliği vardır — `age`. Ancak bunun dışında, aslında `Object.prototype`'dan devralınan birkaç özelliği daha vardır.
19+
20+
```javascript
21+
let stringRepresentation = adult.toString();
22+
// the variable has value of '[object Object]'
23+
```
24+
25+
`toString` , devralınan bir Object.prototype özelliğidir. Bir objenin string temsilini döndüren bir fonksiyonun değerine sahiptir. Daha anlamlı bir temsil döndürmek istiyorsanız, bunu geçersiz kılabilirsiniz. Sadece adult nesnesine yeni bir özellik ekleyin.
26+
27+
```javascript
28+
adult.toString = function () {
29+
return "I'm " + this.age;
30+
};
31+
```
32+
33+
Şimdi `toString` fonksiyonunu çağırırsanız, yorumlayıcı objenin kendisinde yeni özelliği bulacak ve duracaktır.
34+
35+
Yorumlayıcı, nesnenin kendisinden ve daha sonra prototipi boyunca bulacağı ilk özelliği alır.
36+
37+
Varsayılan Object.prototype yerine kendi nesnenizi prototip olarak ayarlamak için `Object.create`'ı şu şekilde çağırabilirsiniz:
38+
39+
```javascript
40+
let child = Object.create(adult);
41+
/* Bu şekilde nesneler oluşturma, varsayılan Object.prototype'u istediğimiz ile kolayca değiştirmemizi sağlar. Bu durumda, child'ın prototipi adult objesidir. */
42+
43+
child.age = 8;
44+
/* Daha önce, child'ın kendi age özelliği yoktu ve yorumlayıcı bunu bulmak için child'ın prototipine bakmak zorunda kaldı.
45+
Şimdi, child'ın kendi yaşını ayarladığımızda, yorumlayıcı daha ileri gitmeyecek.
46+
Not: adult'ın yaşı hala 26. */
47+
let stringRepresentation = child.toString();
48+
/* Not: child'ın toString özelliğini geçersiz kılmadık, bu nedenle adult'ın yöntemi çağrılacak. adult'ın toString özelliği yoksa, Object.prototype'un toString yöntemi çağrılacak ve "[object Object]" yerine "I'm 8" alacağız. */
49+
```
50+
51+
`child`'ın prototipi `adult`, `adult`'ın prototipi ise `Object.prototype`'dur. Bu prototipler dizisi **prototip zinciri** olarak adlandırılır.

tr/objects/reference.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
---
2+
chapter: 9
3+
pageNumber: 59
4+
---
5+
6+
# Reference (Referans)
7+
8+
Objeler **asla kopyalanmaz**. Referansla iletilir. Obje referansı, bir nesneye atıfta bulunan bir değerdir. `new` operatörü veya nesne literal sözdizimi kullanarak bir nesne oluşturduğunuzda, JavaScript bir nesne oluşturur ve ona bir referans atar.
9+
10+
İşte obje literal sözdizimi kullanarak bir nesne oluşturma örneği:
11+
12+
```css
13+
var object = {
14+
foo: "bar";
15+
}
16+
```
17+
18+
İşte `new` operatörü kullanarak bir nesne oluşturma örneği:
19+
20+
```typescript
21+
var object = new Object();
22+
object.foo = "bar";
23+
```
24+
25+
Bir nesne referansını bir değişkene atadığınızda, değişken yalnızca nesneye referans tutar, nesneyi kendisini değil. Bu, nesne referansını başka bir değişkene atarsanız, her iki değişkenin de aynı nesneye işaret edeceği anlamına gelir.
26+
27+
Örneğin:
28+
29+
```javascript
30+
var object1 = {
31+
foo: "bar",
32+
};
33+
34+
var object2 = object1;
35+
36+
console.log(object1 === object2); // Sonuç: true
37+
```
38+
39+
Yukarıdaki örnekte, `obje1` ve `obje2` hem aynı nesneye referans tutan değişkenlerdir. `===` operatörü referansları karşılaştırmak için kullanılır, nesneleri değil ve her iki değişkenin de aynı nesneye referans tuttuğu için `true` döndürür.
40+
41+
{% hint style="info" %}
42+
`Object.assign()` yöntemini kullanarak, var olan bir nesnenin kopyası olan yeni bir nesne oluşturabilirsiniz.
43+
{% endhint %}
44+
45+
Aşağıda referansla bir nesne örneği verilmiştir.
46+
47+
```javascript
48+
// Bir pizzam olduğunu düşünelim
49+
let myPizza = { slices: 5 };
50+
// Ve onu sizinle paylaştım
51+
let yourPizza = myPizza;
52+
// Ben bir dilim daha yiyorum
53+
myPizza.slices = myPizza.slices - 1;
54+
let numberOfSlicesLeft = yourPizza.slices;
55+
// Şimdi 4 dilimiz var çünkü myPizza ve yourPizza
56+
// aynı pizza nesnesine referans verin.
57+
let a = {},
58+
b = {},
59+
c = {};
60+
// a, b ve c her biri
61+
// farklı boş nesne
62+
a = b = c = {};
63+
// a, b ve c hepsi
64+
// aynı boş nesneye referans verin
65+
```

0 commit comments

Comments
 (0)