2012-03-15 35 views

Trả lời

86

"Tôi vẫn còn tò mò như những gì nó có nghĩa là khi nó nói ngày không hợp lệ"

Đó chỉ đơn giản là giá trị toString của đối tượng prototype của hàm Date constructor.


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

Bạn có thể ghi đè lên nó nếu bạn thích ...

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

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

Một chút chủ đề off, nhưng __proto__ là trong dự thảo làm việc hiện tại cho phiên bản tiếp theo của ECMAScript, tên mã là Harmony.

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

  • Added phần B.3.1 với quy định cụ thể __proto__ tính năng.
+49

Bạn đang đóng, nhưng phần "lý do" vẫn bị thiếu, lý do là đối tượng ['Date.prototype'] (http://es5.github.com/#x15.9.5) là * Ngày đối tượng của chính nó * nhưng thuộc tính bên trong '[[PrimitiveValue]]' của nó là 'NaN' (thuộc tính bên trong này trên các đối tượng ngày lưu trữ [giá trị thời gian] (http://es5.github.com/#x15.9.1.1)), do đó, nó không đại diện cho một ngày hợp lệ. 'Date.prototype' là một đối tượng tương tự như' new Date (NaN) '... – CMS

+0

@CMS: Có ý nghĩa. Đó là thông tin tốt. Vui lòng thêm nó vào câu trả lời nếu bạn muốn. –

+4

vì vậy về cơ bản, không có lỗi và Chrome chỉ phản ánh toString() không hiển thị giá trị thực –

2

xem xét bạn đã tạo một đối tượng Date mới, tôi sẽ không lo lắng về nó. Lý do là, nếu bạn thử mã này:

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

Điều này sẽ xác định rằng bạn đang kế thừa các phương pháp Ngày tháng và thực tế, Ngày IS được xác định.

Nếu bạn muốn điều tra thêm, hãy xem this bài đăng.

0

Nguyên mẫu của ví dụ Ngày không có giá trị xác định. Chỉ cá thể có một giá trị. Bạn xác định nó khi bạn khởi tạo nó.

Các vấn đề liên quan