2

最初に、私はそれが可能かどうか尋ねました:constキーワードを使用してオブジェクトのプロパティとしてJavascript定数を作成する方法は?

今、私は尋ねなければなりません:なぜですか?私への答えは「理由だけで」のようですが、次のようなことをするととても便利です。

var App = {};  // want to be able to extend
const App.goldenRatio= 1.6180339887  // throws Exception

アクティベーションオブジェクトに設定された定数が機能するのに、他のオブジェクトに設定されている場合は機能しないのはなぜですか?

これが可能だった場合、どのような損害を与えることができますか?

constパブリックAPIの変更を防止しない場合、その目的は何ですか?

4

4 に答える 4

4

最新のブラウザで変更できない値が必要な場合は、を使用definePropertyして書き込み不可能な(別名読み取り専用)プロパティを作成します。

var App = {};
Object.defineProperty(App,'goldenRatio',{value:1.6180339887});
console.log( App.goldenRatio ); // 1.6180339887
App.goldenRatio = 42;
console.log( App.goldenRatio ); // 1.6180339887
delete App.goldenRatio;         // false
console.log( App.goldenRatio ); // 1.6180339887

writable:trueオプションを渡さない場合、definePropertyデフォルトでに設定されるfalseため、プロパティに加えようとした変更はすべて黙って無視されます。さらに、渡さない場合はconfigurable:trueデフォルトでに設定されfalse、プロパティを削除することはできません。

于 2012-06-01T03:30:13.470 に答える
2

constクロスブラウザ(ES6機能)がサポートされていることとサポートされていないことを除けばconst App.goldenRatio= 1.6180339887、同じ理由で機能しません。オブジェクトプロパティを設定しているため、先頭にまたはvar App.goldenRatio= 1.6180339887を付けると構文エラーになります。キーワード。varconst

于 2013-02-19T18:04:38.997 に答える
0

var MY_CONSTANT = "some-value"; ALL_CAPSなどの規則を使用して、特定の値を変更してはならないことを示すことができます

于 2012-06-01T03:10:40.423 に答える
0

あなたが尋ねるつもりだった質問に答えて、決して使用しないと言うつもりですconst。通訳はそれで何もしません。開発者を誤解させて、値が変更されないと想定できるようにするだけです。これは、constキーワードが存在しない場合とほぼ同じです。

于 2012-06-01T03:12:20.250 に答える