2012-03-15 6 views
89

मैं जानता हूँ कि __proto__ अब मान्य नहीं है (या मानक का हिस्सा नहीं) और सभी कि लेकिन मैं अभी भी क्या मतलब है कि यह जब यह कहते हैं अवैध तिथि जब मैं की __proto__ मूल्य को देखने के लिए के रूप में उत्सुक हूँ ..क्रोम देव उपकरण अमान्य तिथि के रूप में __proto__ को दिनांक क्यों दिखाता है?

var myDate = new Date(1331869050000); 

उत्तर

86

बस Date निर्माता समारोह के prototype वस्तु की toString मूल्य है कि "मैं अभी भी क्या मतलब है कि यह जब यह कहते हैं अवैध तिथि के रूप में उत्सुक हूँ"।


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

यदि आप चाहें तो इसे ओवरराइड कर सकते हैं ...

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

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

एक छोटी सी बंद विषय है, लेकिन __proto__ अगले संस्करण के लिए वर्तमान कार्यशील प्रारूप में है ईसीएमएस्क्रिप्ट, कोडनाम हर्मनी का।

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

साथ निर्दिष्ट __proto__ सुविधा
  • जोड़ा गया अनुभाग B.3.1।
+49

आप करीब हैं, लेकिन "क्यों" भाग अभी भी गुम है, इसका कारण यह है कि ['date.prototype'] (http://es5.github.com/#x15.9.5) ऑब्जेक्ट एक * तिथि है ऑब्जेक्ट स्वयं * * इसकी '[[PrimitiveValue]] 'आंतरिक संपत्ति' NaN' है (दिनांक वस्तुओं पर यह आंतरिक संपत्ति [टाइम मान] (http://es5.github.com/#x15.9.1.1) संग्रहीत करती है), इसलिए यह वास्तव में एक वैध तिथि का प्रतिनिधित्व नहीं करता है। 'Date.prototype' एक नई तारीख (NaN)' के समान वस्तु है ... – CMS

+0

@CMS: समझ में आता है। यह अच्छी जानकारी है। अगर आप चाहें तो इसे उत्तर में जोड़ने के लिए स्वतंत्र महसूस करें। –

+4

इसलिए मूल रूप से, कोई त्रुटि नहीं है और क्रोम सिर्फ toString() को प्रतिबिंबित कर रहा है जो वास्तविक मूल्य –

2

आपको एक नई तिथि वस्तु बनाने पर विचार करते हुए, मैं इसके बारे में चिंता नहीं करता। कारण किया जा रहा है, अगर आप इस कोड का प्रयास करें:

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

यह तय करेंगे कि आप दिनांक इनहेरिट कर रहे हैं तरीकों वस्तुओं और कहा कि वास्तव में, दिनांक परिभाषित किया गया है।

यदि आप आगे की जांच करना चाहते हैं, तो this पोस्ट पर एक नज़र डालें।

0

दिनांक उदाहरण के प्रोटोटाइप में कोई परिभाषित मूल्य नहीं है। केवल उदाहरण का मूल्य है। जब आप इसे तुरंत चालू करते हैं तो आप इसे परिभाषित करते हैं।

संबंधित मुद्दे