ECMAScript 6 में Symbol.toPrimitive, एक नया Symbol.toPrimitive
प्रतीक शुरू की है, जो, जब एक वस्तु कुंजी के रूप में इस्तेमाल किया, should define एक समारोह आदिम मूल्य एक वस्तु के वापस जाने के लिए:बनाम Object.prototype.valueOf
let object = {
aNumber: 0,
[Symbol.toPrimitive]() {
return this.aNumber;
}
};
object.aNumber = 5;
console.log(object + 2) // 7
हालांकि, वहाँ भी Object.prototype.valueOf
समारोह है, जो, according to the documentation, आदिम मूल्य के लिए एक वस्तु कन्वर्ट करने के लिए नए सिरे से परिभाषित किया जा सकता है:
let object = {
aNumber: 0,
valueOf() {
return this.aNumber;
}
};
object.aNumber = 5;
console.log(object + 2) // 7
तो, इन तरीकों में से जो ऑब्जेक्ट को अपने आदिम मूल्य में बदलने के लिए ईएस 6 में एक नई वस्तु को परिभाषित करते समय उपयोग किया जाना चाहिए?
[स्पेक] (http://people.mozilla.org/~jorendorff/es6-draft.html#sec-toprimitive) -> _ अमूर्त ऑपरेशन ToPrimitive इनपुट इनपुट और वैकल्पिक तर्क लेता है पसंदीदा टाइप। अमूर्त ऑपरेशन ToPrimitive अपने इनपुट तर्क को गैर-ऑब्जेक्ट प्रकार में परिवर्तित करता है। यदि कोई ऑब्जेक्ट एक से अधिक आदिम प्रकार में परिवर्तित करने में सक्षम है, तो यह उस प्रकार के पक्ष में वैकल्पिक संकेत प्रीफेरर्ड टाइप का उपयोग कर सकता है ._ - यदि कोई कस्टम '.toprrimitive()' revalult '.valueOf()' का रिटर्न नहीं है – Andreas
@Andreas आपके द्वारा लिंक किया गया अनुच्छेद 'प्रतीक' विनिर्देश से संबंधित नहीं है, लेकिन _any_ गैर-आदिम मान को आदिम में परिवर्तित करने के लिए है। 'Symbol.toPrimitive' के अनुसार नमूना [अनुच्छेद 1 9 .4.3.4।] (Https://people.mozilla.org/~jorendorff/es6-draft.html#[email protected]@toprimitive) –