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 toStringwartość prototypeobiektu Datefunkcji 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.prototypeobiekt 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.prototypejest obiektem podobnym donew Date(NaN)...