- 2011-05-29 (日) 1:31
- JavaScrpit
Head First JavaScript ―頭とからだで覚えるJavaScriptの基本
1. evalとは?
eval: 文字列を式として評価する関数、または複数の文をプログラム中のあるコンテキストで実行するサブルーチン
JavaScriptパターン
のevalを使わない手法を学習中です。
2. JavaScriptパターン
静的プロパティにアクセスするパターン
// Anti Patern
var property = "test";
alert(eval("obj." + property));
// Good Patern
var property = "test";
alert(obj[property]);
3. evalの危険性
eval()のセキュリティ問題。
不正な、コードが実行される危険。
Bad) AjaxリクエストからJSONレスポンスをevalで処理
Good) ブラウザの組み込みメソッドを使用して、JSONのレスポンスを構文解析
- JSON.parse (新JavaScript例文辞典)
- JQuery.parseJSON・・・JSON.parseがサポートされていないブラウザを使用する場合
setInterval(), setTimeOut(), Function()コンストラクタ
文字列を、setInterval(), setTimeOut(), Function()コンストラクタに渡すのは、eval()にほぼ等しいので危険。
// Anti Patern
setTimeOut("myFunc()", 1000);
setTimeOut("myFunc(1, 2, 3)", 1000);
// Good Patren
setTimeOut(myFunc, 1000);
setTimeOut(function() {
myFunc(1, 2, 3);
}, 1000);
どうしてもeval()を使用する必要がある時、new Functionコンストラクタを検討。
その関数のローカルなスコープで実行されるため、自動的にグローバルになることがない。
- Newer: OSXに、wgetをインストールする。
- Older: JavaScriptパターン
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://splitchin.com/tech/2011/05/29/eval%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%aa%e3%81%84%e3%80%82-javascript%e3%83%91%e3%82%bf%e3%83%bc%e3%83%b3/trackback/
- Listed below are links to weblogs that reference
- eval()使用しない。- JavaScriptパターン from あらびき林檎。