Сеттер / геттер на этом - PullRequest
0 голосов
/ 03 декабря 2018

Есть ли способ сделать setter / getter только для объекта класса?Я имею в виду, есть ли в любом случае установить get / set для this в классе?Например:

class something {
    constructor() {
        // ...
    }
    get this() {
      return 'Fizz buzz'
    }
}

const somethingelse = new something
console.log(something) // "Fizz buzz"

Это то, что я хочу получить.Если я хочу, чтобы он работал точно так же, мне нужно сделать const {this} = new something, что я и не хочу использовать.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Нет, для целых объектов нет сеттеров / геттеров.Сеттер / геттер всегда является свойством.Вы назначаете / оцениваете ссылку на свойство или переменную, сам объект в этом не участвует.Вы не можете иметь объект, который ведет себя как примитивная строка при доступе.Самое близкое, что вы получите, это что-то вроде

class Something {
    valueOf() {
        return 'Fizz buzz';
    }
}

const somethingelse = new Something;
console.log(something.valueOf()); // "Fizz buzz"
console.log(String(something)); // "Fizz buzz"
0 голосов
/ 03 декабря 2018

Прежде всего, любая зарезервированная переменная не должна быть переопределена.То, что вы пытаетесь сделать, это плохая практика.

Как работает ключевое слово "this"?

Но если вы хотите, чтобы это указывало на другую область, выможет легко сделать это локально с помощью функций call / apply или постоянно с помощью функции bind.

...