2016-06-20 4 views
0

jQueryは '$'または 'jquery'変数を両方の方法で動作させるためにステートメントを作成しましたか?私が試したもののために関数オブジェクトを作成する方法jQuery同様に

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

::私たちはjQueryのを使用するとき、私は、私はこれを記述するために適切な言葉を使っていますかわからないけど、たとえば

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

'$()'が 'undefined'を返すので、2番目の例では' $().A() 'がどのように動作するのかわかりません。 – 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

@ webbbありがとうございます。オブジェクトとしては動作しません。 – Till

+0

JSでは関数がオブジェクトです;) – webdeb

-2

あなたは以下のようにそれを行うことができます。

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

$(element).foo(); 
関連する問題