2016-06-27 2 views
3

У меня есть 2 вопроса, пожалуйста, дайте мне совет.Как сделать объект функции похожим на объект в jQuery?

Я пытаюсь выяснить, как работает jQuery. Прочитав его код, я обнаружил, что jQuery просто возвращает this из своего функционального объекта. Есть простой пример вокруг линии 2975.

Так будет похож на этот код ниже:

var a = new function a () { 
     return this; 
    }; 
a[0] = document.querySelectorAll('div#1') ; 

console.log(a) 

var b = new function () { 
     this[0] = document.querySelectorAll('div#1') ; 
     return this; 
    }; 

console.log(b) 

console.log(jQuery('#1')) 

Однако о том, когда я проверяю консоль,

enter image description here

, как вы можете видеть, JQuery не jQuery в перед объектом, а объект больше похож на массив, который он цитирует [ ], а прототип - Object[0].

и __proto__: Object[0] не имеет constructor внутри.

Мои вопросы: как jQuery создает новый экземпляр функции без имени функции спереди, и что это такое __proto__: Object[0]?

спасибо!

+1

вы знаете, что анонимные функции/объект выглядит? – madalinivascu

+0

Анонимные функции/объект @madalinivascu будут отображать «Объект» спереди! – Till

+0

Какую версию jQuery вы используете? Я пытаюсь найти то, что вы называете строкой 2975 –

ответ

0

Я наконец нашел, как они это сделали.

$(this) или $(selector) на самом деле возвращен объект Array !!!! Я до сих пор не смог найти, в котором часть JQuery делает это, но то, что они делают это, как показано ниже

var a = new function a () { 
     return this; 
    }; 

var b = [ document.querySelectorAll('div#1') ] ; 

b.__proto__ = new a; 


console.log (b) 

Выше будет возвращать объект, так как JQuery.

Разница b.__proto__ является insteadof Object[0]

Пожалуйста, сообщите, если я ошибаюсь ...

Смежные вопросы