समस्या
हमें जावास्क्रिप्ट में एक उपयोगकर्ता परिभाषित डेटा प्रकार स्ट्रीक बनाना है जिसे मान के साथ किसी भी हद तक जंजीर में बांधा जा सकता है और संचालन वैकल्पिक रूप से
मान निम्न स्ट्रिंग्स में से एक हो सकता है -
→ one, two three, four, five, six, seven, eight, nine
ऑपरेशन निम्नलिखित स्ट्रिंग्स में से एक हो सकता है -
→ plus, minus
उदाहरण के लिए, यदि हम अपनी कक्षा के संदर्भ में निम्नलिखित को लागू करते हैं -
Streak.one.plus.five.minus.three;
तब आउटपुट होना चाहिए -
const output = 3;
आउटपुट स्पष्टीकरण
क्योंकि जो ऑपरेशन हुए वे हैं -
1 + 5 - 3 = 3
उदाहरण
निम्नलिखित कोड है -
const Streak = function() { let value = 0; const operators = { 'plus': (a, b) => a + b, 'minus': (a, b) => a - b }; const numbers = [ 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine' ]; Object.keys(operators).forEach((operator) => { const operatorFunction = operators[operator]; const operatorObject = {}; numbers.forEach((num, index) => { Object.defineProperty(operatorObject, num, { get: () => value = operatorFunction(value, index) }); }); Number.prototype[operator] = operatorObject; }); numbers.forEach((num, index) => { Object.defineProperty(this, num, { get: () => { value = index; return Number(index); } }); }); }; const streak = new Streak(); console.log(streak.one.plus.five.minus.three);
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
3