Я искал способ преобразовать что-то в точечной записи в строку, используя Javascript. В основном вот что я ищу:

function dotToString(dotNotation){
  return something;
}


dotToString(this.is.just.a.test);
// Would return "this.is.just.a.test"
0
Josh Feinsilber 25 Апр 2017 в 04:58

2 ответа

Лучший ответ

Краткий ответ: нет

Длинный ответ: когда javascript передает аргумент функции, он передает значение из переменной, которую вы пытаетесь передать. Ни в коем случае функция dotToString не видит this.is.just.a.test (она увидит «бла» ", если this.is.just.a.test = "blah"). Это невозможно.

4
Goodbye StackExchange 25 Апр 2017 в 02:05

Да, вы можете сделать это с прокси.

function makeDotProxy(name) {
  return new Proxy({}, {
    get(target, prop) {
      if (prop === 'valueOf' || prop === 'toString') return () => name;
      if (typeof prop === 'symbol') return Reflect.get(target, prop);
      return makeDotProxy(name + '.' + prop);
    }
  });
}

const This = makeDotProxy('this');
console.log(This.is.a.just.a.test.toString());

Но тогда зачем тебе это?

1
25 Апр 2017 в 03:17