2015-12-25 10 views
10

जावास्क्रिप्ट में यह संभव है करने के लिए:वस्तु शाब्दिक संपत्ति मूल्य आशुलिपि `के साथ असंगत this`

var a = {this: this} 

लेकिन ES6 संपत्ति आशुलिपि के साथ मैं सिंटैक्स त्रुटि:

var b = {this}; // SyntaxError: this is a reserved identifier 

यह एक वास्तविक उपयोग नहीं है मामला लेकिन मैं बस सोच रहा हूं कि इन दोनों के बीच क्या अंतर है। मैंने सोचा कि यह वही करना चाहिए (या तो एक नई वस्तु बनाएं या एक त्रुटि फेंक दें)।

अद्यतन:

मैं फ़ायरफ़ॉक्स 42.0 में इस उदाहरण चलाते हैं। हालांकि यह बेबेल-नोड में काम करता है (यह त्रुटि के बिना ऑब्जेक्ट { this: {} } बनाता है)। तो सही व्यवहार क्या है?

+1

यह क्या पर्यावरण है? यह मेरे लिए बेबेल-नोड में काम करता है। –

+0

मेरे लिए वही है, [यहां ठीक काम करता है] (https://babeljs.io/repl/#?experimental=false&evaluate=true&loose=false&spec=true&code=var%20b%20%3D%20%7Bthis%7D%3B%20) – CodingIntrigue

+0

ऐसा लगता है कि यह बेबेल-नोड में काम कर रहा है। मेरा अपडेट देखें। – madox2

उत्तर

8

उस शॉर्टेंड संपत्ति प्रारंभकर्ता क्लॉज के लिए व्याकरण यह निर्धारित करता है कि इस्तेमाल किया जाने वाला एकल शब्द पहचानकर्ता होना चाहिए। क्योंकि this एक आरक्षित शब्द है, यह एक पहचानकर्ता नहीं है, इसलिए आपको एक वाक्यविन्यास त्रुटि मिलती है।

spec का प्रासंगिक भाग section 12.2.6 है।

+1

इसके लायक होने के लिए मैं इस तथ्य से सहमत हूं कि आप * इस नाम का उपयोग संपत्ति नाम के रूप में कर सकते हैं लेकिन ओपी में प्रयास विफल होने पर एक भाषा वार्ट बनता है, लेकिन आप जावास्क्रिप्ट प्रोग्रामर के रूप में उन लोगों के लिए उपयोग करते हैं। – Pointy

+0

मैं इसके बारे में उलझन में हूं। सबसे पहले, '{this}' कम से कम मेरे लिए बेबेल-नोड में काम करता है। बेबेल इसे '{"यह": यह} में संकलित करता है;', जो पूरी तरह से कानूनी है। मैं समझता हूं कि '{break} 'काम नहीं कर सका, यहां तक ​​कि' ब्रेक 'के माध्यम से भी एक कुंजी के रूप में अनुमति दी जाती है, क्योंकि कोई पहचानकर्ता' ब्रेक 'नहीं हो सकता है। लेकिन 'यह' एक विशेष पहचानकर्ता है, क्षमा करें अगर मेरे पास शब्दावली बिल्कुल सही नहीं है। तो, क्या यह एक भाषा वार्ट है, या बेबेल इसे अनुमति देने की अनुमति देता है, या जो भी इंजन/प्रोसेसर ओपी उपयोग कर रहा है उसे अनुमति नहीं दे रहा है? –

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