2015-04-19 16 views
7

Chrome konsolundaki bazı nesnelerimin yapıcı işlev adı yerine Object olarak görüntülendiğini fark ettiğimde, bugün etrafımda oynuyordum. Object.create, Chrome'da proto nesnesinin konsol çıktısını değiştirir mi?

Bu

garip, bu yüzden aşağıdaki koda aşağı haşlanmış: o Nesne diyor giriş yaptığında

Yukarıdaki kodda b yılında
function Baz() { 
    this.baz = true; 
} 
var b = new Baz(); 
var c = Object.create(b); 
console.log(b); // why is b outputting with Object not Baz? 

, henüz Object.create aracılığıyla oluşturulan ve edilmez. Orada yazım hatası yok ve yanlışlıkla soruyorum c. Bu nesneye dokunmadığım zaman b'nin günlüğü değiştirildi. Başka bir örnek oluşturmak c, b değiştirmemelidir.

Bu bir Chrome hatası olmalı? Chrome'un Baz numaralı telefonu doğru şekilde bildirmesi için herhangi bir yol var mı?

Bu, hata ayıklama amaçları için önemlidir.

enter image description here

GÜNCELLEME Hata açtı: https://code.google.com/p/chromium/issues/detail?id=478522

+0

chrome haklısınız – webduvet

+0

@webduvet: nasıl? –

+0

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/create – webduvet

cevap

5

Güncelleme: http://crbug.com/478522

Krom 41'ler çıkışı:: enter image description here Bu gerçekten Burada izlenen ediliyor Chrome 41, Chrome 42 arasında bir gerileme

Krom 42 çıkışı:

Eğer dev araçları yazarken Onlar vurgulayarak söz diziminde iyileştirmeler yaptık ve bu muhtemelen kırdı. Dev araçlarla derinden ilgilenen bir arkadaşa pingledim. Güzel bul.


Hayır. Açıkladığınız sorun çok gerçektir.

Kurucularla oluşturulan nesneler, günlüğe kaydedilirken ve daha iyi hata ayıklama deneyimini Chrome'da (ve düğüm/io.js'de) genellikle daha iyi gösterir.

Bu nedenle, kavramsal olarak tercih etsem de, kendi kodumdaki prototip kalıtım için Object.create'dan kaçındım.

Sanırım bunu anlıyorsunuz - ama yine de gelecekteki okuyuculara açıklık getirmek istiyorum. Devralma hala Object.create sürüm ile gerçekleştiğini unutmayın - tek fark, nesnenin günlüğü oturumundadır ve hata ayıklayıcısında işlemden geçirilir.

+0

Yeni olandan bahsetmiyorum. Örneğimdeki var b, yalnızca bir yapıcı işleviyle oluşturuldu. Başka bir nesne oluşturmanın neden krom çıktılarını değiştirdiğini anlamıyorum. – pbo

+0

@pbo 'console.log (b)' logs 'Baz {baz: true}' ve 'console.log (c)' günlükleri 'Nesne {baz: true}' (her ne kadar _is_ a Baz olsa da, oluşturulduğu için Object.create ile ve bir kurucu ile –

+0

@BenjaminGruenbaum Hayır, her iki log 'Object {baz: true}' . – Siguza

İlgili konular