[ Web Proxy ]
URL:
Viewing: https://tr.javascript.info/primitives-methods [Back]  [Original]

lkel Tiplerin Metodlar
TR

Bu ak-kaynakl projenin tm dnyada kullanlabilir olmasn istiyoruz.

Kendi dilinizde eviriye yardm edebilirsiniz!

    Javascript.info'da ara:
    Eitimde ara:
    Light themeDark theme
    DanskEnglishEspaolFranaisIndonesiaItalianoTrkeOzbek

    lkel Tiplerin Metodlar

    JavaScript ilkel tiplerin(karakter dizisi, saylar vs.) karakter gibi kullanlmasna olanak verir.

    Ayrca bunlarn metodlarnn arlabilmesini salar. Az sonra da gsterilecei gibi, aslnda bu ilkel tipler obje deillerdir. (lerleyen zamanlarda bu daha ak bir ekilde grlecektir.)

    lkel tipler ile objeler arasndaki farka baklacak olursa:

    lkel tip:

    • 7 tane ilkel tip vardr: string, number, bigint, boolean, symbol, null ve undefined.

    Obje:

    • Birok deeri zellikleri ierisinde saklayabilir.
    • {} eklinde, rnein {isim:"Kemal", yas:30} gibi. JavaScriptte fonksiyonlar gibi baka trde de objeler bulunmaktadr.

    Objeler iin n nemli zelliklerden birisi de fonksiyonlar zellikleri ierisinde tutabilmeleridir:

    let kemal = {
      isim: "Kemal",
      selamVer: function() {
        alert("Selam Dostum!");
      }
    };
    
    kemal.selamVer(); // Selam Dostum!

    kemal isminde bir obje ve selamVer adnda bir metod yukardaki gibi tanmlanabilir.

    ou var olan objeler, tarih, hatalar, HTML elementleri kendine has metodlara sahiptirler.

    Tabi bu farklln bir maliyeti var!

    Objeler ilkellere gre daha ardrlar. Daha fazla kaynak gerektirirler. Fakat zellikler ve metodlar ok nemli olduklarndan JavaScript motoru bunlar olabildiince optimize eder.

    Obje olarak ilkel tipler

    Burada JavaScripti oluturan kiiler ikilem ile karlamlardr:

    • Karakter dizisi veya say gibi ilkel tipler ile birok ey yaplmak istenebilir. Bunlara metod eklenmesine izin vermek harika olur.
    • lkel tipler olabildiince hzl olmaldr.

    zm biraz garip :

    1. lkel tipler hala ilkel tip olarak kalacak. Tek bir deer istendii gibi atanabilecek.
    2. Karakter dizisi, say, boolean ve sembollerin metodlarna izin verilecek.
    3. Bu yapld yani bu metodlara eriilmeye alldnda zel bir obje kab yaratlacak ve bunun iinde farkl fonksiyonalite eklenebilecek veya silinebilecek.

    Obje Kaplar(Object wrappers) her ilkel tip iin farkldr bunlar: String, Number, Boolean ve Symbol eklindedir. Hepsinin kendine has metodlar vardr.

    rnein str.toUpperCase() bir stringdeki karakterlerin hepsini byk harfe evirir.

    almas u ekilde:

    let str = "Merhaba";
    
    alert( str.toUpperCase() ); // MERHABA

    Basit deil mi? str.toUpperCase() arldnda sras ile aadakiler olmaktadr.

    1. Karakter dizisi str ilkel bir tiptir. Bundan dolay zelliine eriilmek istendiinde ayn karakter dizisine sahip bir obje yaratlr. Bu objenin toUpperCase() gibi kullanl metodlar bulunmaktadr.
    2. Bu metod yeni bir karakter dizisi dndrr ve bu alert iinde gsterilir.
    3. zel yaratlan obje imha edilir, str eski ilkel haline dner.

    Yani ilkel tipler metodlar salam olur fakat yine de hafif bir ekilde varln srdrr.

    JavaScript motoru bu ilemleri en uygun hale getirmektedir. Belki ekstra bir objenin yaratlmasn tamamen pas geebilir. Fakat yine de sanki yaratlm gibi davranmas gerekmektedir.

    Saylar da kendine has metodlara sahiptir. rnein toFixed(n) sayy yuvarlamaya yarar:

    let n = 1.23456;
    
    alert( n.toFixed(2) ); // 1.23

    Saylar ve Karakter Dizisi - Strings blmlerinde daha fazla metod ilenecektir

    String/Number/Boolean gibi yapclar sadece ite kullanm iindir

    Java gibi baz diller bu obje kapsayclar dorudan tanmlamanza izin verir. rnein new Number(1) veya new Boolean(false) gibi

    JavaScriptte de bu eskiden kalma zelliklerden dolay mmkndr, fakat nerilmez. Bir rnek verilecek olursa:

    alert( typeof 1 ); // "number"
    
    alert( typeof new Number(1) ); // "object"!

    sifir karlatrmalarnda sorunla yaratabilir:

    let sifir = new Number(0);
    
    if (sifir) { // burada sfr true gelecek nk o bir obje
      alert( "Sfr doru mu??? );
    }

    Dier bir yandan new olmadan String/Number/Boolean kullanlmas ise tamamen mantkldr. Deeri belirtilen ilkel tipe evirmeye yarar.

    rnein:

    let num = Number("123"); // karakteri sayya evir.
    null/undefinedn metodlar yoktur.

    null ve undifinedn obje kab yoktur. Bundan dolay metodlar bulunmaz. Byle bakldnda bunlara en ilkel tip denebilir.

    Byle bir deikenin zelliine erimeye almak hata ddrr:

    alert(null.test); // hata

    zet

    • null ve undefined haricindeki ilkel tipler ie yarar metodlarn kullanlmasna izin verir.
    • eklen, bu metodlar geici objelerle alr, fakat JavaScript motorlar ok etkin bir ekilde altklarndan bu arlar masrafl deildir.

    Grevler

    nem: 5

    Aadaki koda gre:

    let str = "Merhaba";
    
    str.test = 5;
    
    alert(str.test);

    alr m? alrsa ekranda ne gsterilir?

    zm

    altrmay deneyin:

    let str = "Merhaba";
    
    str.test = 5; // (*)
    
    alert(str.test);

    ki trl cevap verilebilir:

    1. undefined
    2. Hata

    Neden? Ne olduuna (*) satrndan bakarsanz:

    1. str nin bir zelliine eriildiinde, obje kab yaratlr.
    2. Bundan dolay obje test zelliini alr.
    3. obje kab kaybolur ve ilem tamamlanr.

    yleyse str nin son satrnda zellie ait hibir iz yoktur. lkel tipin zerinde yaplan deiiklik iin yeni obje kab retilir.

    Baz tarayclar ilkel tiplere yeni zellik tanmlanmasna izin vermezler. Bundan dolay (*) blmnde undefined deil de hata da grebilirsiniz. Bu aslnda zelliklerin dnda bir uygulamadr.

    Bu rnekten de grdnz gibi ilkel tipler kesinlikle obje deillerdir.

    Geici metodlar oluturarak obje gibi davranrlar. Yukardaki rnekte olduu gibi bunlar fazla tutamazlar.

    Eitim haritas

    Yorumlar

    yorum yapmadan nce ltfen okuyun...
    • Eer gelitirme ile alakal bir neriniz var ise yorum yerine github konusu gnderiniz.
    • Eer makalede bir yeri anlamadysanz ltfen belirtiniz.
    • Koda birka satr eklemek iin <code> kullannz, birka satr eklemek iin ise <pre> kullann. Eer 10 satrdan fazla kod ekleyecekseniz plnkr kullanabilirsiniz)

    Web Proxy Viewer  |  New URL  |  Original Page