Функция конструктора Firebug против пользовательской функции - PullRequest
2 голосов
/ 20 октября 2010

Я быстро выяснил, что означает раскраска вкладки DOM Firebug, и я вижу объяснение ниже отсюда

Красными полужирными текстовыми точками "функция конструктора"

Полужирный шрифт зеленого цвета указывает «функция пользователя».

В чем разница между двумя типами функций?

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Как показывает пример Марселя, Firebug помечает объекты, которые имеют тип «function» и которые имеют свойство «prototype» с хотя бы одним подвойством, в качестве «userClass»

http://code.google.com/p/fbug/source/browse/branches/firebug1.7/content/firebug/dom.js#431

Тамна самом деле в Javascript нет такой вещи, как «функция конструктора», просто функции, которые можно использовать в качестве конструкторов.Любая функция может использоваться для создания объектов, но это действительно интересно, только если функция имеет прототип.

1 голос
/ 20 октября 2010

Функция jQuery является функцией конструктора ($ является просто ссылкой на jQuery). Вы можете увидеть это, когда увидите его определение:

var jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context );
},
…
jQuery.fn = jQuery.prototype = {
    init: function( …

Вы можете воспроизвести это поведение (выделение жирным красным цветом) при определении функции-конструктора и , добавляющей что-то к объекту-прототипу, например

var testFunc = function () {
    /* nothing so far */
};

testFunc.prototype.baz = function () {
    /* nothing, this gets boring */
};

или даже просто случайное число

testFunc.prototype.baz = 4;

Обратите внимание, что это не соответствует фактическому определению функции конструктора в JavaScript. Если вы протестируете связанный исходный код в Firebug, car будет окрашен в зеленый цвет, а не в красный. Более того, см. Преимущества прототипа JavaScript .

...