Может наследовать объект Math в класс es6? - PullRequest
2 голосов
/ 06 мая 2019

Могу ли я расширить Math объект в моем классе? Я хочу, чтобы Math статическое поле было статичным внутри моего класса.

class MyClass extends Math {
  constructor() {
    super();
  }
}

console.log(MyClass.PI);

1 Ответ

5 голосов
/ 06 мая 2019

Полагаю, вы могли бы использовать function вместо class и использовать setPrototypeOf:

function MyClass() {
}
Object.setPrototypeOf(MyClass, Math);
MyClass.prototype = Object.create(Math);

console.log(MyClass.PI);

Но Math невозможно создать. Использование его как класса не имеет особого смысла. Возможно, было бы более разумно использовать простой объект, который наследуется от Math:

const MyObj = Object.create(Math);
MyObj.someOperation = () => {
  console.log('some operation');
};

console.log(MyObj.PI);
MyObj.someOperation();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...