Home > JavaScrpit > eval()使用しない。- JavaScriptパターン

eval()使用しない。- JavaScriptパターン

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コンストラクタを検討。
その関数のローカルなスコープで実行されるため、自動的にグローバルになることがない。

Comments:0

Comment Form
Remember personal info

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 あらびき林檎。

Home > JavaScrpit > eval()使用しない。- JavaScriptパターン

カテゴリー
RSS あらびき林檎
スポンサー
書籍

Return to page top