- Руководство по ключевому слову this Java
- 1. введение
- 2. Устранение Неоднозначности Затенения Полей
- 3. Ссылки на конструкторы одного и того же класса
- 4. Передача этого в качестве параметра
- 5. Возврат этого
- 6. Ключевое слово this Во Внутреннем классе
- 7. Заключение
- Что делает «return this» в функции javascript?
- 4 ответов
- Ключевое слово this в JavaScript для начинающих
- Что такое this?
- Ситуации, когда this указывает на объект window
- Использование this внутри объекта
- This и вложенные объекты
- Особенности стрелочных функций
- Использование this в обычных функциях
- Обращение к this из функции, которая была объявлена за пределами объекта, а потом назначена в качестве его метода
- Ключевое слово new и this
- О важности ключевого слова new
- Итоги
- В чем смысл «this» в Java?
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- Ответ 13
- Ответ 14
- Ответ 15
- Ответ 16
Руководство по ключевому слову this Java
Узнайте, как использовать ключевое слово this в Java для ссылки на текущий объект.
Автор: baeldung
Дата записи
1. введение
В этом уроке мы рассмотрим ключевое слово this Java.
В Java это ключевое слово является ссылкой на текущий объект, метод которого вызывается .
Давайте рассмотрим, как и когда мы можем использовать это ключевое слово.
2. Устранение Неоднозначности Затенения Полей
Ключевое слово полезно для устранения неоднозначности переменных экземпляра из локальных параметров . Наиболее распространенная причина заключается в том, что у нас есть параметры конструктора с тем же именем, что и поля экземпляра:
Как мы видим здесь, мы используем this с полями name и age instance – чтобы отличить их от параметров.
Другое использование-использовать this с параметром скрытия или затенения в локальной области. Пример использования можно найти в статье Переменная и Метод скрытия .
3. Ссылки на конструкторы одного и того же класса
Из конструктора мы можем использовать this() для вызова другого конструктора того же класса . Здесь мы используем this() для цепочки конструкторов, чтобы уменьшить использование кода.
Наиболее распространенным вариантом использования является вызов конструктора по умолчанию из параметризованного конструктора:
Или мы можем вызвать параметризованный конструктор из конструктора без аргументов и передать некоторые аргументы:
Обратите внимание, что this() должен быть первым оператором в конструкторе, иначе произойдет ошибка компиляции.
4. Передача этого в качестве параметра
Здесь у нас есть print Instance() метод, в котором определено ключевое слово this |/аргумент:
Внутри конструктора мы вызываем метод print Instance () . С помощью this мы передаем ссылку на текущий экземпляр.
5. Возврат этого
Мы также можем использовать это ключевое слово для возврата текущего экземпляра класса из метода.
Чтобы не дублировать код, вот полный практический пример того, как он реализован в шаблоне проектирования builder .
6. Ключевое слово this Во Внутреннем классе
Мы также используем this для доступа к экземпляру внешнего класса из внутреннего класса:
Здесь, внутри конструктора, мы можем получить ссылку на экземпляр Keyword Test с помощью Keyword Test.this call . Мы можем пойти еще глубже и получить доступ к переменным экземпляра, таким как Ключевое слово Test.this.name поле.
7. Заключение
В этой статье мы исследовали ключевое слово this в Java.
Как обычно, полный код доступен на Github .
Источник
Что делает «return this» в функции javascript?
интересно, что делает «return this» в функции javascript, какова ее цель? предположим, у нас есть следующий код:
что делает «return this» внутри функции?
Я знаю, что делает код выше, и каково использование ключевого слова «this». Я просто не знаю, что делает «return this» внутри функции.
4 ответов
это относится к экземпляру объекта, на котором в настоящее время вызывается метод. Он используется для цепей. Например, вы можете сделать что-то вроде этого:
С foo возвращает this (ссылка на myObject ), bar будет вызываться на объекте тоже. Это то же самое, что делал
но требует меньше набирать.
вот более полный пример:
это означает, что метод вернет объект, которому он принадлежит. Это может быть полезно, если вы хотите, чтобы цепочки инструкций, как так:
пример реального мира: jQuery
tl; dr возвращение this из метода является распространенным способом разрешить «цепочку» методов вместе.
this относится к текущему контексту и изменяет значение в зависимости от способа вызова функции.
С вызовом функции this относится к глобальному объекту, даже если функция вызывается из метода, и функция принадлежит к тому же классу, что и вызывающий ее метод. Дуглас Крокфорд описал это как «ошибку в конструкции языка» [Crockford 28]
С вызовом метода, this относится к объекту, на котором вызывается метод.
С применением вызова, this относится к тому, что вы установили для него при вызове apply.
С вызова конструктора, this относится к объектам, созданный для вас за кулисами, который возвращается, когда выходы конструктор (при условии, что вы не ошибочно возвращаете свой собственный объект из конструктора).
в приведенном выше примере вы создаете новый метод под названием method что позволяет динамически добавлять функции, и возвращает this , тем самым позволяя сцепления.
Источник
Ключевое слово this в JavaScript для начинающих
Автор материала, перевод которого мы сегодня публикуем, говорит, что когда она работала в сфере бухучёта, там применялись понятные термины, значения которых легко найти в словаре. А вот занявшись программированием, и, в частности, JavaScript, она начала сталкиваться с такими понятиями, определения которых в словарях уже не найти. Например, это касается ключевого слова this . Она вспоминает то время, когда познакомилась с JS-объектами и функциями-конструкторами, в которых использовалось это ключевое слово, но добраться до его точного смысла оказалось не так уж и просто. Она полагает, что подобные проблемы встают и перед другими новичками, особенно перед теми, кто раньше программированием не занимался. Тем, кто хочет изучить JavaScript, в любом случае придётся разобраться с this . Этот материал направлен на то, чтобы всем желающим в этом помочь.
Что такое this?
Предлагаю вашему вниманию моё собственное определение ключевого слова this . This — это ключевое слово, используемое в JavaScript, которое имеет особое значение, зависящее от контекста в котором оно применяется.
Причина, по которой this вызывает столько путаницы у новичков, заключается в том, что контекст this меняется в зависимости от его использования.
This можно считать динамическим ключевым словом. Мне нравится, как понятие «контекст» раскрыто в этой статье Райана Морра. По его словам, контекст всегда является значением ключевого слова this , которое ссылается на объект, «владеющий» кодом, выполняемым в текущий момент. Однако, тот контекст, который имеет отношение к this , это не то же самое, что контекст выполнения.
Итак, когда мы пользуемся ключевым словом this , мы, на самом деле, обращаемся с его помощью к некоему объекту. Поговорим о том, что это за объект, рассмотрев несколько примеров.
Ситуации, когда this указывает на объект window
Если вы попытаетесь обратиться к ключевому слову this в глобальной области видимости, оно будет привязано к глобальному контексту, то есть — к объекту window в браузере.
При использовании функций, которые имеются в глобальном контексте (это отличает их от методов объектов) ключевое слово this в них будет указывать на объект window .
Попробуйте выполнить этот код, например, в консоли браузера:
Использование this внутри объекта
Когда this используется внутри объекта, это ключевое слово ссылается на сам объект. Рассмотрим пример. Предположим, вы создали объект dog с методами и обратились в одном из его методов к this . Когда this используется внутри этого метода, это ключевое слово олицетворяет объект dog .
This и вложенные объекты
Применение this во вложенных объектах может создать некоторую путаницу. В подобных ситуациях стоит помнить о том, что ключевое слово this относиться к тому объекту, в методе которого оно используется. Рассмотрим пример.
Особенности стрелочных функций
Стрелочные функции ведут себя не так, как обычные функции. Вспомните: при обращении к this в методе объекта, этому ключевому слову соответствует объект, которому принадлежит метод. Однако это не относится к стрелочным функциям. Вместо этого, this в таких функциях относится к глобальному контексту (к объекту window ). Рассмотрим следующий код, который можно запустить в консоли браузера.
Если, озадачившись рассматриваемым вопросом, заглянуть на MDN, там можно найти сведения о том, что стрелочные функции имеют более короткую форму записи, чем функциональные выражения и не привязаны к собственным сущностям this , arguments , super или new.target . Стрелочные функции лучше всего подходят для использования их в роли обычных функций, а не методов объектов, их нельзя использовать в роли конструкторов.
Прислушаемся к MDN и не будем использовать стрелочные функции в качестве методов объектов.
Использование this в обычных функциях
Когда обычная функция находится в глобальной области видимости, то ключевое слово this , использованное в ней, будет привязано к объекту window . Ниже приведён пример, в котором функцию test можно рассматривать в виде метода объекта window .
Однако если функция выполняется в строгом режиме, то в this будет записано undefined , так как в этом режиме запрещены привязки по умолчанию. Попробуйте запустить следующий пример в консоли браузера.
Обращение к this из функции, которая была объявлена за пределами объекта, а потом назначена в качестве его метода
Рассмотрим пример с уже известным нам объектом dog . В качестве метода этого объекта можно назначить функцию chase , объявленную за его пределами. Тут в объекте dog никаких методов не было, до тех пор, пока мы не создали метод foo , которому назначена функция chase . Если теперь вызвать метод dog.foo , то будет вызвана функция chase . При этом ключевое слово this , к которому обращаются в этой функции, указывает на объект dog . А функция chase , при попытке её вызова как самостоятельной функции, будет вести себя неправильно, так как при таком подходе this будет указывать на глобальный объект, в котором нет тех свойств, к которым мы, в этой функции, обращаемся через this .
Ключевое слово new и this
Ключевое слово this находит применение в функциях-конструкторах, используемых для создания объектов, так как оно позволяет, универсальным образом, работать со множеством объектов, создаваемых с помощью такой функции. В JavaScript есть и стандартные функции-конструкторы, с помощью которых, например, можно создавать объекты типа Number или String . Подобные функции, определяемые программистом самостоятельно, позволяют ему создавать объекты, состав свойств и методов которых задаётся им самим.
Как вы уже поняли, мне нравятся собаки, поэтому опишем функцию-конструктор для создания объектов типа Dog , содержащих некоторые свойства и методы.
Когда функцию-конструктор вызывают с использованием ключевого слова new , this в ней указывает на новый объект, который, с помощью конструктора, снабжают свойствами и методами.
Вот как можно работать со стандартными конструкторами JavaScript.
Теперь поработаем с только что созданной функцией-конструктором Dog .
Вот ещё один пример использования функций-конструкторов.
О важности ключевого слова new
При вызове функции-конструктора с использованием ключевого слова new ключевое слово this указывает на новый объект, который, после некоторой работы над ним, будет возвращён из этой функции. Ключевое слово this в данной ситуации весьма важно. Почему? Всё дело в том, что с его помощью можно, используя единственную функцию-конструктор, создавать множество однотипных объектов.
Это позволяет нам масштабировать приложение и сокращать дублирование кода. Для того чтобы понять важность этого механизма, подумайте о том, как устроены учётные записи в социальных сетях. Каждая учётная запись может представлять собой экземпляр объекта, создаваемый с помощью функции-конструктора Friend . Каждый такой объект можно заполнять уникальными данными о пользователе. Рассмотрим следующий код.
Итоги
На самом деле, особенности использования ключевого слова this в JavaScript не ограничиваются вышеописанными примерами. Так, в череду этих примеров можно было бы включить использование функций call , apply и bind . Так как материал этот рассчитан на начинающих и ориентирован на разъяснение основ, мы их здесь не касаемся. Однако если сейчас у вас сформировалось начальное понимание this , то и с этими методами вы вполне сможете разобраться. Главное — помните о том, что если что-то с первого раза понять не удаётся, не прекращайте учиться, практикуйтесь, читайте материалы по интересующей вас теме. В одном из них вам обязательно попадётся нечто такое (какая-то удачная фраза, например), что поможет понять то, что раньше понять не удавалось.
Уважаемые читатели! Возникали ли у вас сложности с пониманием ключевого слова this в JavaScript?
Источник
В чем смысл «this» в Java?
Обычно я использую this только в конструкторах.
Я понимаю, что он используется для идентификации переменной параметра (с помощью this.something ), если он имеет одно и то же имя с глобальной переменной.
Однако я не знаю, что такое реальное значение this в Java и что произойдет, если я использую this без точки ( . ).
ОТВЕТЫ
Ответ 1
this относится к текущему объекту.
Каждый нестатический метод работает в контексте объекта. Поэтому, если у вас есть такой класс:
Затем вызов frobnicate() на new MyThisTest() будет печатать
Так эффективно вы используете его для нескольких вещей:
- уточните, что вы говорите о поле, когда есть еще что-то другое с тем же именем, что и поле
- относятся к текущему объекту в целом
- вызывать другие конструкторы текущего класса в вашем конструкторе
Ответ 2
Ниже приведена копия и вставка из здесь, но очень хорошо объясняется все различные применения ключевого слова this :
Определение: Ключевое слово Javas this используется для ссылки на текущий экземпляр метода, на котором он используется.
Ниже приведены способы использования этого:
Чтобы специально указать, что вместо переменной или локальной переменной используется переменная экземпляра. То есть
Здесь это относится к переменной экземпляра. Здесь приоритет высокий для локальной переменной. Поэтому отсутствие this обозначает локальную переменную. Если локальная переменная, которая является именем параметра, не такая же, как переменная экземпляра, то независимо от this используется или нет, она обозначает переменную экземпляра.
this используется для ссылки на конструкторы
Это вызывает конструктор того же класса java, который имеет два параметра.
this используется для передачи текущего экземпляра java в качестве параметра
Как и выше, это также можно использовать для возврата текущего экземпляра
Примечание. Это может привести к нежелательным результатам при использовании во внутренних классах в двух указанных выше пунктах. Поскольку это будет относиться к внутреннему классу, а не к внешнему экземпляру.
this можно использовать для получения дескриптора текущего класса
Хотя это можно сделать с помощью
Как всегда, this связан с его экземпляром, и это не будет работать в статических методах.
Ответ 3
Чтобы быть полным, this также может использоваться для ссылки на внешний объект
Ответ 4
Он относится к текущему экземпляру определенного объекта, поэтому вы можете написать что-то вроде
Ответ 5
В Swing довольно распространено писать класс, который реализует ActionListener и добавляет текущий экземпляр (т.е. ‘this’) в качестве ActionListener для компонентов.
Ответ 6
Если вы вызываете myObject.method() , то this будет ссылаться на myObject внутри method .
Ответ 7
Это относится к экземпляру, на который вызывается метод
Ответ 8
Объекты имеют методы и атрибуты (переменные), которые производятся от классов, чтобы указать, какие методы и переменные принадлежат к определенному объекту, используется зарезервированное слово this . в случае переменных экземпляра важно понять разницу между неявными и явными параметрами. Взгляните на вызов fillTank для объекта audi .
Значение в скобках является неявным параметром, а сам объект является явным параметром, методы, которые не имеют явных параметров, используют неявные параметры, метод fillTank имеет как явный, так и неявный параметр.
Давайте более подробно рассмотрим метод fillTank в классе Car
В этом классе мы имеем переменную экземпляра «tank» . Может быть много объектов, которые используют переменную экземпляра резервуара, чтобы указать, что переменная экземпляра «tank» используется для определенного объекта, в нашем случае объект «audi», который мы создали ранее, мы используем ключевое слово this reserved, для переменных экземпляра использование ‘this’ в методе указывает, что переменная экземпляра в нашем случае «tank» является переменной экземпляра неявного параметра.
Компилятор java автоматически добавляет зарезервированное слово this , поэтому вам не нужно его добавлять, это вопрос предпочтения. Вы не можете использовать this без точки (.), Потому что это правила java (синтаксис).
- Объекты определяются классами и имеют методы и переменные
- Использование this в переменной экземпляра в методе указывает, что переменная экземпляра принадлежит неявному параметру или что это переменная экземпляра неявный параметр.
- Неявный параметр — это объект, из которого в этом случае вызывается метод «audi».
- Компилятор java автоматически добавляет это зарезервированное слово, добавляя, что это вопрос предпочтения
- this нельзя использовать без точки (.) это синтаксически недействительно
- this также может использоваться для различения локальных переменных и глобальных переменных, имеющих одно и то же имя
- зарезервированное слово this также применяется к методам, чтобы указать, что метод принадлежит определенному объекту.
Ответ 9
Ответ 10
это может использоваться внутри некоторого метода или конструктора.
Возвращает ссылку на текущий объект.
Ответ 11
Ключевое слово this используется для ссылки на текущую переменную блока, например, рассмотрим приведенный ниже код (просто пример, поэтому не ожидайте стандартного кода JAVA):
Вот оно. Выход будет «2». Если мы не использовали ключевое слово this, то вывод будет: 0
Ответ 12
Это «ссылка на объект в текущем контексте» эффективно. Например, чтобы распечатать «этот объект», вы можете написать:
Обратите внимание, что использование «глобальной переменной» несколько не работает. если вы используете this.variableName , то по определению это не глобальная переменная — это переменная, специфичная для этого конкретного экземпляра.
Ответ 13
Быстрый поиск в Google принес этот результат: http://xahlee.org/java-a-day/this.html
В значительной степени ключевое слово «this» является ссылкой на текущий объект (сам).
Ответ 14
Если переменные экземпляра такие же, как переменные, объявленные в конструкторе, мы используем «this» для назначения данных.
Надеюсь, что это поможет.
Ответ 15
Я тоже искал тот же ответ и как-то не мог понять концепцию четко. Но, наконец, я понял это из ссылка
это ключевое слово в Java. Который может использоваться внутри метода или конструктора класса. Он (это) работает как ссылка на текущий объект, метод которого или конструктор вызывается. это ключевое слово может использоваться для ссылки на любого члена текущего объекта из метода экземпляра или конструктора.
Проверьте примеры в ссылке для четкого понимания
Ответ 16
В Java «this» есть предопределенная переменная. Если мы используем «this» в методе, который означает, что мы получаем ссылку (адрес) текущего текущего объекта. Например.
Источник