В Typescript может ли метод экземпляра объекта, когда он используется map (), получить доступ к свойствам этого объекта?

Вы можете попытаться отформатировать вывод в хорошем формате. (не проверено, хотя)

public override string ToString()
{
    return string.Format("Name: {0} Number: {1:n0} Date: {2:yyyy-MM-dd} Salary: {3:n2}", _name, _number, _date, _salary);
}

существует множество целей, переписывающих .ToString (), в зависимости от контекста. например,

  • некоторым разработчикам нравится иметь красиво отформатированное описание объекта при выполнении отладки, переписывание .ToString () позволит им иметь содержательное описание с некоторым идентификатором (например, идентификатор объекта );
  • Некоторые разработчики хотели бы поместить некоторый код сериализации в метод ToString ();
  • Некоторые разработчики даже ввели некоторый отладочный код в метод .ToString (), хотя это может быть не очень хорошая практика.

действительно зависит от контекста вашего необходимо. вы можете найти некоторые хорошие практики, чтобы следить за ними в Интернете - верьте, что в Интернете много ресурсов.

-1
задан Gus Mueller 15 January 2019 в 20:51
поделиться

2 ответа

Вы должны понимать суть этого в функциях против функции стрелки. Функции стрелок это всегда будет экземпляр объекта, к которому прикреплена функция. В обычных функциях это объект, к которому прикреплена вызывающая функция

class MyClass {
  multiplyer = 2;

  x = [1,2,3].map(this.double);

  doubleArrow = val => this.multiplyer * val; // this is always what you expect it to be, the instance of this object

  y = [1,2,3].map(this.doubleArrow);

  double(val) {
    return this.multiplyer * val; // this will change depending on the function that calls it
  }
}
0
ответ дан Adrian Brand 15 January 2019 в 20:51
поделиться

Судя по моим тестам, это не так.

Распространенная ошибка - ошибка this. Пример, который потерпит неудачу:

class Foo {
  x = 123
  returnX() { return this.x; } 
}
const fail = [new Foo()].map(foo.returnX);

Исправить

Использовать функцию стрелки:

class Foo {
  x = 123
  returnX = () => { return this.x; } 
}
const pass = [new Foo()].map(foo.returnX);

Подробнее

0
ответ дан basarat 15 January 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: