Chrome Dev Tool neden bir __proto__ tarihini Geçersiz Tarih olarak gösteriyor?


89

Kullanımdan __proto__kaldırıldığını (veya standardın bir parçası olmadığını) biliyorum ve bunların hepsini ama __proto__değerine baktığımda Geçersiz Tarih yazmasının ne anlama geldiğini hala merak ediyorum ..

var myDate = new Date(1331869050000);

Yanıtlar:


87

"Geçersiz Tarih yazmasının ne anlama geldiğini hâlâ merak ediyorum"

Bu basitçe yapıcı işlevin nesnesinin toStringdeğeridir .prototypeDate


Date.prototype.toString(); // "Invalid Date"

İsterseniz geçersiz kılabilirsiniz ...

Date.prototype.toString = function() { return "I like turtles." };

var myDate = new Date(1331869050000);
myDate.__proto__; // I like turtles.

Biraz konu dışı, ancak bir __proto__sonraki ECMAScript sürümü için mevcut çalışma taslağında, kod adı Harmony.

http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts

  • __proto__Özelliği belirten bölüm B.3.1 eklendi .

49
Yakındasınız, ancak "neden" kısmı hala eksik, bunun nedeni, nesnenin kendi başınaDate.prototype bir Date nesnesi olması, ancak [[PrimitiveValue]]dahili özelliğinin NaN(tarih nesnelerindeki bu dahili özellik, zaman değerini saklar ) olmasıdır, bu nedenle temsil etmez aslında geçerli bir tarih. Date.prototypebenzer bir nesnedir new Date(NaN)...
Christian C. Salvadó

@CMS: Mantıklı. Bu iyi bir bilgi. İsterseniz cevaba eklemekten çekinmeyin.

4
yani temelde, hata yok ve Chrome sadece gerçek değeri göstermeyen toString () 'i yansıtıyor
Kat Lim Ruiz

3
Artı kaplumbağaların sevgisi için bir
Guy

2

yeni bir Date nesnesi yaptığınızı düşünürsek, bunun için endişelenmem. Nedeni, bu kodu denerseniz:

var myDate = new Date(1331869050000);
alert(typeof myDate.getMonth != 'undefined')    //true

Bu, Date nesneleri yöntemlerini miras aldığınızı ve aslında Tarih IS'nin tanımlandığını belirler.

Eğer daha fazla araştırma istiyorsanız, bir göz atın bu yazı.


0

Bir Date örneğinin prototipinin tanımlanmış bir değeri yoktur. Yalnızca örneğin bir değeri vardır. Onu somutlaştırdığınızda tanımlarsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.