> For the complete documentation index, see [llms.txt](https://hanuce.gitbook.io/javascript-egitimi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanuce.gitbook.io/javascript-egitimi/referans-reference-veri-tipleri/object-nesne/nesnelerde-uc-nokta-spread-operatoru.md).

# Nesnelerde Üç Nokta (Spread) Operatörü

**`Object.assign()`**'dan daha kullanışlı bir sözdizimidir.

**`...`** operatörü ile nesnenin tüm özelliklerinden yayılacak şekilde bağımsız bir kopya (klon) oluşturulur. Örnek.

{% code lineNumbers="true" %}

```javascript
let isci = {
    tcNo:12345678900,
    isim:'Güneş Gün',
};
let metrik = {
    kidem:15,
    maas:12000,
};
// isci nesnesine metrik nesnesinin özelliklerini ekledik.
isci = {...metrik};
alert(isci.kidem); //'15' çıktısı verir.

//veya yeni bir nesnede birleştirebiliriz.
let yeniIsci = {...isci,...metrik};
// yayılım yapılan nesnenin değerinin değişmesinden etkilenmez.
isci.kidem = 25;
alert(yeniIsci.kidem); //'15' çıktısı verir.
```

{% endcode %}

Nesnelerde aynı özellikler var ise son sıradaki değer ilkinin üzerine yazılır. Örnek.

{% code lineNumbers="true" %}

```javascript
let isci = {
    tcNo:12345678900,
    isim:'Güneş Gün',
};
let metrik = {
    tcNo: 0,
    kidem:15,
    maas:12000,
};

isci = {...metrik}; // metrik'teki tcNo öncekinin üzerine yazılır.
alert(isci.tcNo); //0 çıktısı verir.
```

{% endcode %}

Üzerine yazmayı siz sonradan elle de yapabilirsiniz. Örnek.

{% code lineNumbers="true" %}

```javascript
let isci = {
    tcNo:12345678900,
    isim:'Güneş Gün',
    kidem:15,
    maas:12000,
};

yeniIsci = {
    ...isci,
    tcNo:0,
    maas:9000,
};
alert(yeniIsci.tcNo); //0 çıktısı verir.
alert(yeniIsci.maas); //9000 çıktısı verir.
//diğer özellikleri aynı kalır
```

{% endcode %}

Eğer değerlerde nesne kullanılmışsa **`Object.assign()`** gibi onların bir klonunu oluşturamaz.

**`...`** operatörü nesnelerde (**`object`**, **`array`** vb.) hepsinde kullanılabilir.

Yukarıda **`...`** operatörünün yayılma özelliğini kullandık.

Fakat tek işlevi yayılma (spread) değildir. Dilimlemeler ve birleştirmeler de yapılabilir. n sayıda elemanı (özelliği) olan bir nesneyi dilimleyebilir ve kalanı (rest) ile birlikte işleme alabilir.

Bu kullanımına '**Rest (Geri Kalan) Parameter'** denir. Bunu ileri fonksiyonlarda göreceğiz. Basit bir örnek.

{% code lineNumbers="true" %}

```javascript
let matematik = {
    topla (...sayilar) { //n (belirsiz) sayıda argüman aldık
        let toplam = 0;
        for (let sayi of sayilar) { // for .. of döngüsünü array'lerde gördük.
            toplam += sayi;
        }
        return toplam;
    }
};
alert( matematik.topla(1,2,3,4,5,6,7,8,9,10) );
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hanuce.gitbook.io/javascript-egitimi/referans-reference-veri-tipleri/object-nesne/nesnelerde-uc-nokta-spread-operatoru.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
