2015-02-08 24 views
5

, konsol.log'un özel nesneler verdiğini etkilemenin bir yolu var mı? Ancak çalışmayan customObject.prototype.toString yönteminin üzerine yazmayı denedim.özel nesnenin console.log davranışını ayarlayın.

Herhangi bir fikrin var mı?

+1

Örneğin

her zaman ekleyebileceğiniz hata ayıklama; 'console.logg = işlev (o) {console.log (o.toString()); } ' –

+0

olası yinelemesi [konsol.log tarafından görüntüleneni denetlemek için JavaScript nesnesinde geçersiz kıldığım bir yöntem var mı?] (Http://stackoverflow.com/questions/2960936/is-there-a-method- I-can-override-on-a-javascript-object-to-control-what-is-displ) – JJJ

cevap

13

node.js'de, console.log, her argüman üzerinde bir biçimlendirme yer tutucusu olmaksızın util.inspect numaralarını çağırır. Dolayısıyla, nesneniz üzerinde bir inspect(depth, opts) yöntemi tanımlarsanız, nesnenin özel dize temsilini almak için çağrılır.

function Custom(foo) { 
    this.foo = foo; 
} 

Custom.prototype.inspect = function(depth, opts) { 
    return 'foo = ' + this.foo.toUpperCase(); 
}; 

var custom = new Custom('bar'); 
console.log(custom); 

Çıkışlar:

foo = BAR

Veya bir sınıf kullanarak: için, öyle inanmıyorum

class Custom { 
    constructor(foo) { 
     this.foo = foo; 
    } 

    inspect(depth, opts) { 
     return 'foo = ' + this.foo.toUpperCase(); 
    } 
} 

var custom = new Custom('bar'); 
console.log(custom); 
+0

yeni bir inceleme yöntemini tanımlamakta başka önemli sonuçları var mı? – MoeSattler

+1

@Moezalez Bildiğim kadarıyla, hayır. Dokümanlara göre, util.inspect'nin birincil faydası, hata ayıklamada kullanmaktır, dolayısıyla bu kullanım amaçlandığı gibidir. – JohnnyHK

+1

Tarayıcılarda eşdeğer bir seçenek var mı? –

İlgili konular