Что делает «вернуть это» в функцию javascript?

Интересно, что делает «вернуть это» в функцию javascript, какова его цель? Предположим, что у нас есть следующий код:

Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }; 

Что означает «вернуть это» внутри функции?

  • JqMath выделить поле, как bbox в MathJax / MathJs
  • Элементы массива элементов Javascript
  • Преобразование RGB в RGBA над белым
  • Как узнать, вызвана ли функция с консоли или из исходного кода
  • Как получить ссылки на все уже открытые дочерние окна
  • Проверка даты Javascript (DD / MM / YYYY) и проверка возраста
  • Я знаю, что делает код выше, и каково использование этого «ключевого слова». Я просто не знаю, что делает «return this» внутри функции.

    4 Solutions collect form web for “Что делает «вернуть это» в функцию javascript?”

    Он ссылается на экземпляр объекта, на который в данный момент вызывается метод. Он используется для цепочки. Например, вы можете сделать что-то вроде этого:

     myObject.foo().bar(); 

    Поскольку foo возвращает this (ссылка на myObject ), на объект будет вызываться bar . Это то же самое, что делать

     myObject.foo(); myObject.bar(); 

    Но требует меньше ввода текста.

    Вот более полный пример:

     function AnimalSounds() {} AnimalSounds.prototype.cow = function() { alert("moo"); return this; } AnimalSounds.prototype.pig = function() { alert("oink"); return this; } AnimalSounds.prototype.dog = function() { alert("woof"); return this; } var sounds = new AnimalSounds(); sounds.cow(); sounds.pig(); sounds.dog(); sounds.cow().pig().dog(); 

    http://jsfiddle.net/jUfdr/

    Это означает, что метод вернет объект, к которому он принадлежит. Это может быть полезно, если вы хотите навести порядок команд следующим образом:

     MyObject.method1().method2().method3(); 

    Пример реального мира: jQuery

     $(this).addClass('myClass').hide(); 

    Tl; dr, возвращающий this из метода, является общим способом, позволяющим объединять методы.


    this относится к текущему контексту и изменяет значение в зависимости от того, как вы вызываете функцию.

    С вызовом функции this относится к глобальному объекту, даже если функция вызывается из метода, а функция принадлежит к тому же классу, что и метод, вызывающий его. Дуглас Крокфорд описал это как «ошибку в дизайне языка» [Crockford 28]

    При вызове метода this относится к объекту, на который вызывается метод.

    При применении вызова this относится ко всему, что вы установили при вызове apply.

    При вызове конструктора this относится к объекту, который создается для вас за кулисами, который возвращается при выходе из конструктора (если вы не ошибочно возвращаете свой собственный объект из конструктора).

    В приведенном выше примере вы создаете новый метод, называемый method который позволяет динамически добавлять функции и возвращает this , тем самым обеспечивая цепочку.

    Таким образом, вы можете сделать что-то вроде:

     Car.method("vroom", function(){ alert("vroom"); }) .method("errrk", function() { alert("errrk"); }); 

    и так далее.

    Он возвращает это, обычно это означает элемент html, который его вызвал, но «это» может иметь различные значения http://www.quirksmode.org/js/this.html

    JavaScript делает сайт умным, красочным и простым использованием.