Дескрипторы свойств в классах ES6 - PullRequest
0 голосов
/ 27 января 2019

Как мне перевести следующий код в класс ES6:

var Mergesort = (function() {
    function Mergesort(){}
    Object.define(Mergesort.prototype,'readOnlyMethod',{
        value:function(){/*DO SOMETHING, RETURN SOME VAL*/},
        configurable:false,
        writable:false,
        enumerable:false
    });
    return Mergesort;
})()

1 Ответ

0 голосов
/ 27 января 2019

Буквальный перевод ES6 будет

const Mergesort = (() => {
    class Mergesort {}
    Object.defineProperty(Mergesort.prototype, 'readOnlyMethod', {
        value() { /*DO SOMETHING, RETURN SOME VAL*/ },
        configurable: false,
        writable: false,
        enumerable: false
    });
    return Mergesort;
})();

, но если вы хотите определить метод как часть выражения class, просто измените дескриптор свойства впоследствии:

class Mergesort {
    readOnlyMethod() { /*DO SOMETHING, RETURN SOME VAL*/ }
}
Object.defineProperty(Mergesort.prototype, 'readOnlyMethod', {configurable:false, writable:false});
...