2011-02-03 9 views
1

それでは、私はページ機能を持っているとしましょう:渡された文字列をJSのオブジェクト参照に変換する簡単な方法(out evalを使用)?

<img src="someImage.jpg" onclick="doSomething(this.id)" id="someVar" alt="blah" /> 

を、私はセットアップクラスを持っている:私は悩みを持っている

function anObject(someProp) 
{ 
this.someProp=someProp; 
} 
someVar=anObject("prop"); 

はdoSomethingの機能である:

function doSomething(theObject) 
{ 
alert(theObject.someProp); //this is treated as "someVar".someProp as far as I can tell instead of someVar.someProp 
} 

基本的に、私は文字列の代わりにオブジェクト参照としてその参照を使用できるようにしたいと思いますが、evalなしでこれを行う簡単な方法はありますか?

また、オブジェクトの代わりに文字列として扱われるように、オブジェクトを確実にする方法はありますか?

EDIT:イメージのIDと同じ名前のオブジェクトを参照しようとしています。イメージ自体ではありません。

+1

キング、このタイプの機能の背後にあるアイデアは何ですか? –

+0

確かに、私はC++やC#に似たオブジェクトとしてJavaScript関数のアイデアをつぶしています。主に自己教育のため。私はちょうどボールのバウンスを持っているかなり長いプログラム、または私がブラウザでオブジェクトとして呼び出す多くのボールを持っています。あなたが好きなら投稿できますが、残りのコードは無関係です。 – Jeff

答えて

1

私はコレクションオブジェクトを使用したい:だから、あなたは、このようにそれらを参照することができ

// Create an object with a property 'someProp', and return it 
// (No messing with 'this') 
function createSomeObject(someProp) { 
    return { 
    someProp: someProp 
    }; 
} 

// Keep a collection of variables 
var someVars = {}; 
someVars.someVar = createSomeObject('prop'); 
someVars.otherVar = createSomeObject('prop2'); 

を:

<img src="someImage.jpg" onclick="doSomething(this)" id="someVar" alt="blah" /> 

そしてあなたのような元のオブジェクトを取得することができますこの:

function doSomething(imageElement) { 
    var someVar = someVars[imageElement.id]; 
    alert(someVar.someProp); // this will return "prop" 
} 
+0

優れています。これは私が探していたものです。しかし、私はいくつかのVarsのグローバルを維持する必要がありますか?うーん。どうもありがとう。 – Jeff

+0

この設定では、 'someVars'をグローバルに保つ必要があります。代わりに、JavascriptオブジェクトをHTMLImage要素にアタッチすることもできますが、それが良い方法かどうか、なぜそうでないのかを覚えていません。 – Martijn

+0

クロージャを使用すると(例えば、すべてのプライベート変数にアクセスできる単一のオブジェクトを返すことができるファクトリコンストラクタを使用するなど)、ほとんどのグローバル変数を回避できます。しかし、パブリックアクセスのためには、常に少なくとも1つのグローバル変数が必要です。 – Martijn

2
doSomething(this) 

あなたを与えるだろう.IDをドロップさて、あなたの関数に代わりにオブジェクトの文字列(this.id)を通過しているオブジェクト

+0

@ K lvanav私は、画像のIDと同じ名前のオブジェクトではなく、画像を参照する機能を私の機能に引き起こすと思います。私が間違っていない限り? – Jeff

+0

はいイメージをオブジェクトとして、イメージプロパティを参照する別のオブジェクトを持っていますか? –

+0

@K lvanavはい、投稿したコードを見れば、オブジェクトはsomeVar = anObject( "prop");で作成されます。 – Jeff

1

として、実際のDOM要素へのREF。 は次のようになります。

<img src="someImage.jpg" onclick="doSomething(this)" id="someVar" alt="blah" /> 
+0

私はKと言ったのと同じIvanov:私は、画像のIDと同じ名前で表示されます。私が間違っていない限り? – Jeff

+0

私は参照してください。 'someVar'というオブジェクトがあるのか​​どうかは不明です。その後、残りのコードをインクルードする必要があります。 – Victor

+0

これは私が上記のすべてです。今のところ、上のコードを実行すると、 "prop"を生成したい場所は未定義になります – Jeff

関連する問題