Anasayfa » Kodlama » Nesneye Yönelik JavaScript (OOJS) Nesne Örnekleri Oluşturmanın 3 Yolu

    Nesneye Yönelik JavaScript (OOJS) Nesne Örnekleri Oluşturmanın 3 Yolu

    Bir programlama dili olduğunda nesneler hakkında her şey, öğrenmemiz gereken ilk şey nesneler nasıl oluşturulur. JavaScript'te nesne oluşturmak oldukça kolaydır: bir çift kıvırcık ayraç Ancak, işi yapacak tek yol da nesne oluşturmak ne de tek yolu hiç kullanmanız gerekecek.

    JavaScript’te, nesne örnekleri yerleşik nesnelerden yaratılmıştır ve program çalışırken ortaya çıkmaktadır. Örneğin, tarih tarihler hakkında bize bilgi veren yerleşik bir nesnedir. Bir sayfada geçerli tarihi göstermek istiyorsak, çalışma zamanı örneği gerek tarih Mevcut tarihle ilgili bilgileri taşıyan.

    JavaScript ayrıca bize izin verir kendi nesnelerimizi tanımlayın çalışma zamanında kendi nesne örneklerini üretebilir. JavaScript'te, her şey bir nesnedir ve her nesnenin bir nihai ata denilen Nesne. Bir nesne örneğinin oluşturulması denir örnekleme.

    1. yeni Şebeke

    Yeni bir nesne örneği oluşturmak için en yaygın ve iyi bilinen yöntemlerden biri kullanmak yeni Şebeke.

    İhtiyacın var inşaatçı yapmak yeni operatör işi. Yapıcı, bir araya getiren bir nesnenin yöntemidir. bu nesnenin yeni örneği. Temel sözdizimi şöyle görünür:

     yeni yapıcı () 

    Bir yapıcı olabilir argümanları kabul et Bu, inşa ettiği nesne örneğine özellikler değiştirmek veya eklemek için kullanılabilir. Oluşturucu aynı ada sahip ait olduğu nesne olarak.

    İşte bir örnek nasıl oluşturulacağı örneği Date () nesne ile yeni anahtar kelime:

     dt = yeni Tarih (2017, 0, 1) console.log (dt) // Pzt 01 Ocak 2017 00:00:00 GMT + 0100 

    Date () yeni bir kurucu oluşturmak için tarih nesne. Bir nesne için farklı yapıcılar farklı argümanlar al aynı tür nesne örneklerini oluşturmak için çeşitli özellikler.

    JavaScript'teki tüm yerleşik nesneler gibi başlatılamaz tarih. Orada nesneler var bir kurucu ile gelme: Matematik, JSON ve yansıtmak, ama onlar hala sıradan nesneler.

    Yapıcıya sahip yerleşik nesneler arasında, sembol yapıcı tarzda çağrılamaz yeni bir örneği başlatmak sembol örneği. Sadece olabilir işlev olarak adlandırılır hangi yeni döndürür sembol değer.

    Ayrıca, yapıcıya sahip yerleşik nesneler arasında, hepsinin yapıcılarının çağrılması için yapıcılara ihtiyacı yoktur. yeni somutlaştırılmak için operatör. fonksiyon, Dizi, Hata, ve RegExp fonksiyon olarak da adlandırılabilir, kullanmadan yeni anahtar kelime, bunlar yeni bir nesne örneği başlatır ve döndürür.

    2. The yansıtmak nesne

    Arka uç programcılar zaten aşina olabilir Yansıma API'leri. Yansıma, programlama dillerinin bir özelliğidir. bazı temel varlıkları inceleyin ve güncelleyin, nesneler ve sınıflar gibi, işlem esnasında.

    JavaScript’te zaten gerçekleştirebilirdiniz bazı yansıma işlemleri Nesne. Ancak uygun Yansıma API'si sonunda JavaScript’te de ortaya çıktı.

    yansıtmak nesnenin bir dizi yöntemi vardır. nesne örnekleri oluştur ve güncelle. yansıtmak nesne yapıcı yok, bu yüzden ile başlatılamaz yeni operatör ve tıpkı Matematik ve JSON, o işlev olarak adlandırılamaz ya.

    ancak, yansıtmak bir eşdeğeri yeni Şebeke: Reflect.construct () yöntem.

     Reflect.construct (target, argumentsList [, newTarget]) 

    İkisi de hedef ve isteğe bağlı NEWTARGET argümanlar kendi yapıcılarına sahip olan nesneler, süre argumentsList bir argümanlar listesi yapıcısına geçirilmek hedef.

     var dt = Reflect.construct (Tarih, [2017, 0, 1]); console.log (dt); // Pzt Oca 01 2017 00:00:00 GMT + 0100 

    Yukarıdaki kod aynı etkiye sahip örnek olarak Date () kullanmak yeni Şebeke. Yine de kullanabilirsin. yeni, Yansıma bir ECMAScript 6 standardı. Aynı zamanda yapmanızı sağlar faydalanmak NEWTARGET tartışma, başka bir avantajı yeni Şebeke.

    Değeri NEWTARGET'nin prototipi (kesin olarak, bu prototip NEWTARGET'ın kurucusu) yeni oluşturulan örneğin prototipi olur.

    Bir prototip Nesnenin özelliği, değeri ayrıca bir nesne, orijinal nesnenin özelliklerini taşıyan. Kısacası, bir nesne üyelerini prototipinden alır.

    Burada bir örnek görelim:

     A sınıfı constructor () this.message = function () console.log ('A'dan gelen mesaj)) B sınıfı constructor ()  message () console.log (' B'den gelen mesajlar ')  data () console.log ('B' verileri ') obj = Reflect.construct (A, [], B) console.log (obj.message ()); // bir konsoldan mesaj .log (obj.data ()); // B konsolundaki veriler.log (objenin adı B) // true 

    Geçerek B üçüncü argüman olarak Reflect.construct (), prototip değeri obj nesne aynı olmak prototipi olarak Byapıcısı (ki bu özelliklere sahiptir) mesaj ve veri).

    Böylece, obj erişebilir mesaj ve veri, prototipinde bulunabilir. Ama, beri obj kullanılarak yapılır bir, ayrıca kendi mesaj o alınan bir.

    Buna rağmen obj bir dizi olarak inşa edilmiştir örneği değil Dizi, prototipi ayarlandığı için Nesne.

     obj = Reflect.construct (Dizi, [1,2,3], Nesne) console.log (obj) // Dizi [1, 2, 3] console.log (nesnenin anlamı Array) // false 

    Reflect.construct () bir nesne oluşturmak istediğinizde yararlı olabilir birden fazla plan kullanmak.

    3. Object.create () yöntem

    Ayrıca bir belirli bir prototip ile yeni sıradan nesne üzerinden Object.create (). Bu da, kullanmaya çok benzer görünebilir yeni operatör, ama değil.

     Object.create (O [, propertiesObject]) 

    O argüman olan bir nesnedir prototip hizmet eder oluşturulacak yeni nesne için. İsteğe bağlı propertiesObject argüman bir özelliklerin listesi yeni nesneye eklemek isteyebilirsiniz.

     A sınıfı constructor ()  message () console.log ('A' mesajından ') var obj = Object.create (new A (), data: yazılabilir: doğru, yapılandırılabilir: doğru, değer: function () return 'veri' obj ') console.log (obj.message ()) // bir konsol.log'dan mesaj (obj.data ()) // obj'ten veri obj1 = Object.create ( yeni A (), foo: yazılabilir: doğru, yapılandırılabilir: doğru, değer: function () objeden 'foo obj1')) konsol.log (obj1.message ()) // A konsolundan mesaj. log (obj1.foo ()) // objeden 1 foo 

    İçinde obj Nesne, eklenen özellik veri, içindeyken obj1, onun foo. Yani, gördüğünüz gibi, yapabiliriz. yeni bir nesneye eklenen özellikler ve yöntemler.

    Oluşturmak istediğinizde bu harika aynı türden çoklu nesneler fakat farklı ek özellikler veya yöntemler. Object.create () sözdizimi, hepsini ayrı ayrı kodlama zahmetinden kurtarır.