Почему в jQuery core.js расширение не определено с помощью прототипа - PullRequest
3 голосов
/ 19 января 2012

Почему в jQuery core.js не extend определяется так:

jQuery.extend = jQuery.fn.extend = function() {
    ...
}

, а не как прототип, например:

jQuery.prototype.extend = jQuery.fn.prototype.extend = function() {
    ...
}

Предположительно с первым,объекты, созданные из jQuery, не будут иметь функцию расширения.

Ответы [ 2 ]

4 голосов
/ 19 января 2012

Потому что jQuery.fn === jQuery.prototype

Это определено по прототипу.jQuery только что решил, что было бы «мило» назвать псевдоним прототипом .fn

.

2 голосов
/ 19 января 2012

Ну, потому что fn - это не что иное, как ярлык к свойству prototype:

console.log($.prototype === $.fn);

Может быть, Джону Резигу надоело набирать prototype для каждого метода и устанавливать хороший псевдоним fn (что на самом деле короче и, на мой взгляд, более внушительно).

...