実際に何かを尋ねる前に、私は先に進んで理論的な質問をします。しかし、それは後でウェブサイトに実装されるかもしれません。グローバル変数を一時的にローカルスコープに置き換えます。
とにかく、私は変数、任意の変数を持っています。それがa
で、そのスコープがグローバルであるとしましょう。今、特定の関数については、その変数の値をグローバル値以外の値に設定したいのですが、それに基づいてにはの値をグローバルに変更しません。たとえば、次のように
a = {something: "Safe", other: "Foo"}
function hello(){
var a = a.other; // Foo
a.something; // Undefined
}
a.something; // Safe
a.other; // Foo
上記のコードの問題は、私は機能でvar a
を定義するとき、それはすでにそれを設定する前に、ローカルでグローバルa
の値をクリアしているということです。つまり、Can't access property [other] of undefined [a]
のようなものを返します。
また、a
はまだa
である必要があります(別の変数名を使用することはオプションではなく、少なくとも理想的ではありません)。実際には、グローバルa
は、hello
からにアクセスできません。
編集:window
もミラノJaricの答えについて、null
で上書きされます。
ありがとうございます!
それは私があなたが元の質問で尋ねることを理解したものではありません。あなたがやっていることは 'a.other'に割り当てられたオブジェクトへの参照を渡すことです、グローバル* a *へのアクセスを防ぐ方法を依頼していましたが、そのプロパティを参照していました。 – RobG
@RobG:このコードとこのコードだけを見ると、ほとんど同じです。私は* one *プロパティにアクセスする必要があり、そこにアクセスしました。他の 'a'プロパティ/メソッドへのアクセスも防止されます。それ以外に、本当に他の方法はありません。物事は不可能ではない*。 – JCOC611
* ab *によって参照されるオブジェクトが実際に* ab *によって参照されていることを発見するには、いくつかの前提があればそれほど難しくない推測が必要です(つまり、他の* a * 、あいまいさによるセキュリティは健全なポリシーではありません)。 – RobG