"prototype" в jQuery fn? + простой javascript-код внутри функции jquery?


Мне было интересно, что означает прототип в jQuery? Я обычно нахожу информацию о "Prototype" - фреймворке - но вот он "Prototype" внутри jQuery...? Не могли бы вы рассказать мне, когда лучше всего использовать его?

Кроме того, не могли бы вы сказать мне: почему мы используем "простой javascript" код внутри плагина jQuery, а не код jquery, как в этом примере? это проблема быстроты?

вот мой пример: (плагин для твиттера)

Спасибо за ваши ответы!

$.each(data, function(i, item) {  
    holder.append("<p>"+item.text.makeLinks()+"</p>");  
});  
//...further in the code  
String.prototype.makeLinks = function() {  
    return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/,   function(str) {  
        return str.link(str);  
    });  
};  

Ответы

Ответ 1

Мне было интересно, что означает "prototype" в jQuery

Библиотека JavaScript с именем Prototype берет свое имя из прототипа JavaScript. В JavaScript prototype - это механизм, который обеспечивает наследование (в отличие от, скажем, классов). Пример: String.prototype относится к объекту prototype String s, который содержит (среди прочего) методы, которые могут быть вызваны на любом String.

В примере вашего вопроса плагин twitter создает новую функцию на String.prototype, называемую makeLinks, которая позволяет выполнять вызовы функций, такие как:

text.makeLinks()

где text - строка.

Подробнее о прототипах:


Почему мы используем код "простого javascript" внутри плагина jQuery вместо кода jQuery?

jQuery не заменяет JavaScript. Это библиотека JavaScript, предназначенная для упрощения написания JavaScript, который в противном случае должен был бы использовать DOM API. Вы видите "vanilla" JavaScript в плагине jQuery, потому что на самом деле нет лучшего способа сделать то, что делает JS.

jQuery - это JavaScript.. Это упрощает запись другого JavaScript, предоставляя более простой API, который остается согласованным между браузерами. Это не относится к DOM, потому что различные поставщики браузеров создали DOM API, которые в основном одинаковы, но не идентичны.

Quirksmode - это сайт, популярный для документирования этих несоответствий (как в CSS, так и в JavaScript).


Добро пожаловать в веб-разработку!

Ответ 2

Прототип - это чистая функциональность javascript.

Он использовал для добавления свойств или методов к уже определенному объекту (в некоторой степени расширяющемуся). Например:

function myCustomObject(){
}

myCustomObject.prototype.myCustomAttr = "Hello";

var instance = new myCustomObject();

alert(instance.myCustomAttr); // alerts Hello