Wiem, że __proto__
jest przestarzały (lub nie jest częścią standardu) i tak dalej, ale wciąż jestem ciekawy, co to znaczy, gdy widzę __proto__
wartość „ Nieprawidłowa data”, gdy patrzę na wartość…
var myDate = new Date(1331869050000);
Wiem, że __proto__
jest przestarzały (lub nie jest częścią standardu) i tak dalej, ale wciąż jestem ciekawy, co to znaczy, gdy widzę __proto__
wartość „ Nieprawidłowa data”, gdy patrzę na wartość…
var myDate = new Date(1331869050000);
Odpowiedzi:
„Wciąż ciekawi mnie, co to znaczy, gdy jest napisane„ Nieprawidłowa data ”
To po prostu toString
wartość prototype
obiektu Date
funkcji konstruktora.
Date.prototype.toString(); // "Invalid Date"
Możesz to zmienić, jeśli chcesz ...
Date.prototype.toString = function() { return "I like turtles." };
var myDate = new Date(1331869050000);
myDate.__proto__; // I like turtles.
Trochę poza tematem, ale __proto__
znajduje się w aktualnym szkicu roboczym następnej wersji ECMAScript, kryptonim Harmony.
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts
- Dodano sekcję B.3.1 ze specyfikacją
__proto__
funkcji.
biorąc pod uwagę, że stworzyłeś nowy obiekt Date, nie martwiłbym się tym. Powodem jest to, że jeśli spróbujesz tego kodu:
var myDate = new Date(1331869050000);
alert(typeof myDate.getMonth != 'undefined') //true
To określi, że dziedziczysz metody obiektów Date i że w rzeczywistości Data jest zdefiniowana.
Jeśli chcesz dokładniej zbadać sprawę, spójrz na ten post.
Date.prototype
obiekt sam w sobie jest obiektem Date, ale jego[[PrimitiveValue]]
wewnętrzna właściwość jestNaN
(ta wewnętrzna właściwość obiektów daty przechowuje wartość czasu ), więc nie reprezentuje faktycznie ważna data.Date.prototype
jest obiektem podobnym donew Date(NaN)
...