2016-06-20 5 views
0

Я хочу знать, как команда jQuery make, чтобы переменная '$' или 'jquery' работала в обоих направлениях? Я не уверен, что я использую правильные слова, чтобы описать это, но пример, когда мы используем Jquery:Как создать объект функции jQuery одинаково

$.foo() // $ as object 
$(element).foo() //$ as function 

За то, что я пробовал:

var Foo = function Foo (element) {} 

Foo.prototype.A = function(){} 

var $ = new Foo; 

$.A() // this works 

$(element).A() // unable to find defined function A, because $ != $() 

или

function Foo (element) {} 

Foo.A = function(){} 

var $ = Foo; 

$().A() // this works 

$.A() // unable to find defined function A, because $() != $ 

Может вы посоветуете мне, что мне не хватает, как я могу выполнить что-то вроде jQuery?

спасибо!

+3

Взгляните на это: [Дать свой собственный JQuery] (http://dfsq.info/site/read/writing-your-own -jquery) –

+1

Я не вижу, как '$(). A()' может работать во втором примере, потому что '$()' возвращает 'undefined'. – nnnnnn

+0

В функциях JS есть объекты. – Redu

ответ

1

Если вы хотите, чтобы ваш $ = new Foo() был функцией, вы должны вернуть функцию.

function Foo() { 
    // ... 
    var f = function(element) {console.log(element)} 
    f.someProp = 'value'; 

    return f; 
} 

var y = new Foo() 
y('bar') 
// -> 'bar' 
y.someProp 
// -> 'value' 
+1

В этом случае он не будет действовать как объект, но – Dellirium

+0

@webdeb Спасибо, но это не может работать как объект – Till

+0

В JS функция - это объект;) – webdeb

-2

Вы можете сделать это, как показано ниже:

$.fn.foo = function(){ 
//Your code here 
} 

$(element).foo(); 
Смежные вопросы