Чтобы понять this
, вам нужно понять объектно-ориентированное программирование.
В объектно-ориентированном программировании большинство методов (функций) относятся к objects
. В Javascript большинство objects
являются элементами окна; кнопка, список, div. Почти что на вашей веб-странице, которую вы можете описать как существительное, вероятно, является object
, в некотором роде; и несколько вещей, которые не являются, являются членами objects
.
Итак, в объектно-ориентированном программировании у вас есть проблема, что у вас может быть метод, скажем, onclick
. Внутри onclick
у вас есть код, который выполняется; скажем, вы меняете фон <div>
от синего до зеленого и обратно, когда на него нажимают. Построим это, на английском/псевдокоде.
myDiv.onClick {
if the div that was clicked on has a background of blue then set that div's background to green
else if the div that was clicked on has a background of green then set it to blue
}
Итак, довольно легко, правда? Если это не было объектно-ориентированное программирование, ваша функция примет аргумент, div_id
. Таким образом,
onClick(div_id theDiv) {
if theDiv.background=blue then theDiv.background=green
else if theDiv.background=green then theDiv.backgrond=blue
}
Однако это объектно-ориентированное программирование. onClick - это метод div, и часть преимущества объектно-ориентированного программирования заключается в том, что вам не нужно передавать аргументы, подобные тому, что вы имеете в виду, - вы имеете в виду div, который называется аргументом, конечно! Каждый div имеет свою собственную ссылку на onClick, возможно, свою собственную копию в зависимости от того, как вы написали метод.
Это действительно оставляет проблему. Как вы говорите,
if this Div's background is blue then set this div's background to green
? Ответ this
. this
относится к объекту, к которому принадлежит текущий метод. Итак, когда нажимают div, его метод onClick вызывается; и у вас есть:
div.onClick() {
if this.background=blue then this.background=green
else if this.background=green then this.background=blue
}
Таким образом, вы только написать одну функцию div.onClick, и теперь каждый ДИВ может быть включен синий или зеленый на досуге.
http://stackoverflow.com/questions/14661108/javascript-method-invocations/14661341#14661341 – GameAlchemist
@AndyRay вы ничего не можете сделать. он не закрыт, поэтому я. Это. – Arpit
Извините, я новичок в Stackoverflow. Почему мой вопрос проголосовал? – TTT