Читал Документация MDN по классам JavaScript и наткнулся на непонятный мне пример присвоения значений. Рассматриваемые строки не были объяснены, потому что страница просто объясняла что-то еще (статические методы). Однако я очарован тем, как это работает и как это будет официально называться, чтобы я мог исследовать это дальше.
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
static distance(a, b) {
const dx = a.x - b.x;
const dy = a.y - b.y;
return Math.hypot(dx, dy);
}
}
Чего я конкретно не понимаю, так это a.x
, b.x
, a.y
и b.y
. Я бы не рассматривал эту точечную нотацию, потому что точечная нотация определяется как «В JavaScript можно получить доступ к свойствам, используя точечную нотацию…». Итак, если это не точечная запись, то какой термин будет применяться к значению x
и y
, присвоенному a
и b
?
Не были бы буквы a
и b
в ряд -
static distance(a, b)
технически можно назвать «параметрами», которые четко определены как нечто иное, чем свойство. А так как они являются «параметрами», то слово «свойство» не применяется, поэтому официальное определение точечной записи не применяется.
Определение параметра: Параметры — это переменные, перечисленные как часть определения функции.
Определение свойства: имеет значение, которое может быть или не быть доступным для записи
Определение точечной нотации: В JavaScript можно получить доступ к свойствам, используя запись через точку...
Второе подтверждение: это запись через точку. Что заставило вас не хотеть считать это таковым?
В-третьих, это запись через точку.
Ясно, я думал, что определение не соответствует этому примеру, но я предполагаю, что это так.
Я просто подумал, что "a" и "b" не свойства, а параметры. Вот почему я спросил. Я никогда не видел, чтобы параметр «a» или параметр «b» устанавливались чем-либо до a.x и так далее.
Справа — a
и b
параметры. a.x
относится к свойству x
параметра a
.
a
и b
не параметры, это аргументы, вы можете называть их Michael_Jackson и Elvis_Presley, если хотите, но они должны относиться к классу Point
@Ry- Если вы воздержитесь, я нашел ответ на свой вопрос и хотел бы опубликовать ответ, пожалуйста.
Этот вопрос возник из-за непонимания того, как работает создание экземпляра объекта и как на этот объект можно ссылаться в статическом методе. a
и b
онлайн
static distance(a,b)
не являются типичными параметрами, которые просто принимают одно значение, как я думал. Они фактически получают полную конкретную ссылку на объект при создании указанных объектов. Следовательно, точечная нотация a.x
действительно является ссылкой на «точечную нотацию» значения, которое присваивается имени или свойству внутри объекта. Также меня смутило то, как
b.x
и b.y
еще не были бы созданы при создании экземпляра первого объекта. По-видимому, «вспомогательный метод», такой как статический метод, программно знает, что нужно ждать, пока все параметры не будут заполнены, прежде чем метод сможет вернуть результат. И он знает это, заполнив все свои параметры объектами.
«не типичные параметры, которые просто принимают одно значение, как я думал» — они есть. Объекты являются одиночными значениями. Параметры здесь работают так же, как и параметры любой другой функции.
@Ry- Даже в приведенном выше примере мне ясно, что созданный объект имеет 2 свойства с 2 значениями внутри него. так как же возможно, что только 1 значение передается параметру a? Я думаю, что грамматически это можно описать как имеющее всего 3 значения, имя объекта и 2 значения, связанные с ним. Также мой ответ подтверждает, что это «точечная нотация», а это конкретный вопрос, который я задал с самого начала.
Правильный ответ кого-то другого должен идти глубже, устраняя коренное заблуждение, которое заставило вас поверить, что это не точечная запись в первую очередь ... за исключением того, что никто никогда не мог понять это, отсюда и комментарии. Если ваш самостоятельный ответ не включает это, это нормально — он просто не должен включать кучу объективно неправильных вещей, например, что a
и b
не являются «типичными параметрами» или что концепция «вспомогательного метода», которая «умеет ждать» вообще существует.
«Всего 3 значения, имя объекта и 2 связанных с ним значения» может быть полезным способом описать это в некотором контексте, но в контексте «нетипичных параметров, которые просто принимают одно значение» это неправильный способ. различие.
@Ry- я понимаю и спасибо! Я постараюсь лучше понять эту тему
Это точечное обозначение является; например, вы обращаетесь к свойству
x
наa
.