Computer >> Máy Tính >  >> Lập trình >> Javascript

Tạo một lớp hoạt động chuỗi trong JavaScript

Vấn đề

Chúng tôi phải tạo kiểu dữ liệu do người dùng xác định là Streak trong JavaScript có thể được xâu chuỗi ở bất kỳ mức độ nào với giá trị hoạt động cách khác

Giá trị có thể là một trong các chuỗi sau -

→ one, two three, four, five, six, seven, eight, nine

Thao tác này có thể là một trong các chuỗi sau -

→ plus, minus

Ví dụ:nếu chúng tôi triển khai phần sau trong ngữ cảnh của lớp của chúng tôi -

Streak.one.plus.five.minus.three;

Sau đó, đầu ra phải là -

const output = 3;

Giải thích đầu ra

Bởi vì các hoạt động đã diễn ra -

1 + 5 - 3 = 3

Ví dụ

Sau đây là mã -

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);

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

3