- 締切済み
JavaScriptで変更されたくない変数(定数)の書き方
Javascriptで、変更されたくない変数(定数)を使いたいのですが、どうすれば良いのでしょうか? IE,FireFoxの両方で可能な方法が知りたいです。 できれば、Opera,Safari,Chromeも使えたら・・・ 無理でしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- imq
- ベストアンサー率72% (16/22)
すみません。回答No.3に書き忘れました。 リードオンリーにしたいという意味でしたらプロパティでは無理なので、メソッド経由でプライベート変数の値を参照するといいです。 var foo = function() { var bar = 62; refurn { barIs: function() { return bar; } }; }(); alert(foo.barIs()); // 62と表示
- imq
- ベストアンサー率72% (16/22)
望みのものとはちょっと違うかもしれませんが、 例えばオブジェクト内ではどのメソッドからも自由に参照できるけど、外部からはアクセスできないプライベート変数のようなものを作ることはできます。 var foo = function() { var bar = 0; // ↓のオブジェクトで使えるプライベート変数 refurn { // オブジェクト本体 method0: function() { ~barを使った式~ }, method1: function() { ~barを使った式~ } }; }(); メソッド内ではbarを書き換えることはできますが、それは自分自身が書き換えないようにコーディングすればいいだけですよね。 殆どのケースはこれで事足りるような気がします。 ちなみに後からmethod0をオーバーライドされたとしても、新たに付けたfunctionについてはレキシカルスコープが発生しないので、barにはアクセスできないです。 foo.method0 = function() { alert(bar); }; foo.method0(); // bar is not defined
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
IE以外なら const myvar=1; と書いておけば、myvar=2;などと代入しようとするとエラーになります。 IE(JScript)にconstがありませんので、 varで定義して、代入しないように注意するしかありません。
- fujillin
- ベストアンサー率61% (1594/2576)
ご質問の意味をはかりかねますが… >変更されたくない変数(定数) 変数名を変更されないということなのか、値を変えられない(=変数名のバッティングを避けたい)ということなのか。 (多分、後者ではないかとは思いますが…) 「他の人がソース上で、スクリプトの変数名を変更できないようにする」という意味なら、そのソースには自分しかアクセスできないようにアクセス権を設定しておくとか? まさか、自分でうっかり変数の値を変えたりしないようにってことではないですよね? 複数の人が同じソースにjavascriptを組込むような環境? あるいはライブラリ的なものを作成して配布するとかいうことなのでしょうか? とりあえずは、グローバル変数を用いないこと。 少々長くても、バッティングしそうにない変数名にするとか。 このぐらいで、まず大丈夫だと思いますが、どういう状況設定なのかよくわからないので… 意味がわかってないけれど、ブラウザの種類には関係ないと思います。