2011-09-16 7 views
0

これは私がGoogleで何も見つけることができないので私を夢中にさせてくれました。おそらく、私は正しい検索用語を知らないからです。しかし、これは私がやろうとしていることです。オブジェクトを使って作業し、値を返すJavaScriptでメソッドを作成する

オブジェクトのように機能する関数を作成したいと思います。私は間違っているかもしれませんが、方法と呼ばれると思います。

これを確認してください。これは私が何をしたいのかの疑似コードです。

function myMethod(){ 
var p = this.getAttribute('x'); 
var p = p+1; 
return p; 
} 

function otherFunction(){ 
var q = document.getElementByID('Element').myMethod(); 
alert(q); 
} 

私はこれを動作させることはできません。それはmyMethod()undefinedであり、機能ではないと言っています。

+0

document.getElementById()を使用して見つかった 'Element'でmyMethodを呼び出そうとしていますか? – bittersweetryan

答えて

4

myMethodを要素で使用できるようにするには、要素 'プロトタイプに要素を追加する必要があります。

Element.prototype.myMethod = myMethod; 

prototypeの概念は大きいですが、それは機能のインスタンスはあなたが「オブジェクトのように」と記述方法で利用可能な機能を持っているという事実のためにダウンしています。

この場合、ページ上のどの要素もElement関数のインスタンスです。したがって、任意の要素には.myMethodがあり、これを呼び出すことができます。 (Elementはあなたが本当にそれに対処していないが、関数である - インスタンスはあなたがHTMLにそれらをそこに置くので、ご利用いただけますが、あなたがElementを使用してバイパスします。)

第二に、あなたはvar pを持っている場合は、その後、別のvar pはしていません感知してください。 p = p + 1、またはp++(1つを追加するためのショートカット)を使用してください。

+2

ElementとHTMLElementのインターフェイス(および残りの&それらのプロトタイプ)はIE7以下では公開されていませんが、注意が必要かもしれません。 – Chase

1
function myMethod(element){ 
    var p = element.getAttribute('x'); 
    var p = p+1; 
    return p; 
} 

function otherFunction(){ 
    var q = myMethod(document.getElementByID('Element')); 
    alert(q); 
} 

もちろん、グローバルスコープでこれらを宣言しない方がよいが、基本的にはJavaScriptを使用して、選択されているDOM要素のメンバーであるmyMethod()を探しているということですが、実際に宣言しているだろう単独で機能する機能。

もう1つのオプションは、プロトタイプの継承を介してメソッドを追加することです。

関連する問題