2016-12-01 32 views
1

アプリケーションで非常にランダムなエラーが発生しているように見せかけていますが、ベンダーもこの問題を訂正しているようですが、これは原因として考えられるさまざまなシナリオを理解するのに役立ちます。 jsの世界でこの問題。許可が拒否されました設定変数

それは問題だけで変数をfalseに設定しているとして「権限拒否」

ラインのJavascriptをもとにエラーが報告されています。

<script LANGUAGE="JavaScript" for='tdNote' event='onclick'> 
    if (this.firstChild.src.indexOf('icon_blank.gif') != -1) return; 
    if(mbInNoteClick || mbInGridClick) return; 

    mbInNoteClick = true; 
    onGridClick(this.parentElement.rowIndex); 
    onNoteIconClick(this.parentElement.rowIndex); 
    mbInGridClick = false; //THIS LINE IS REPORTED AS PERMISSION DENIED 
    mbInNoteClick = false; 
    window.event.cancelBubble = true; 
</script> 

このコードを含むページにはこの変数がないため、これはどこかでグローバルに設定されていると仮定します。

if文でアクセスできる場合は、変数を設定しようとするとアクセス許可が拒否されるシナリオは何ですか?彼の本の中でJSマスターカイル・シンプソンから

Object.defineProperty(myObject, "a", { 
    value: 4, 
    writable: false, // not writable! 
    configurable: false, // not configurable! 
}); 

:それは次のように定義されたため、

+0

どのような文脈ですか?エラーコンソールで、どこでこのエラーが表示されますか? –

+0

実際にifステートメントで利用できますか?もちろん、値の取得と設定には違いがあります。 – krillgar

答えて

1

は、プロパティが定数または不変としてタグ付けされ、主に、非書き込み可能なプロパティを意味します。微妙な例外はを認識することがあります

「あなたはJS-にこの&オブジェクトのプロトタイプを知らない」:プロパティが既に 場合でもconfigu rable:false、writableは常に真の からエラーなしに変更できますが、すでにfalseの場合はtrueに戻すことはできません。

if条件コードがそれを読み取っているため、読み取りアクセス権があります。

また、以下のようなプロパティに対するアクセス許可を宣言する方法もあります。 preventExtensions、オブジェクト。 シール、オブジェクト。 フリーズ

+0

私はソースを掘り起こし始め、通常の方法で宣言されたインクルードされた.jsファイルで見つけました。 'var mbInGridClick = false;'これはまだ他の場所で書き込み不可能に変更できますか? – Tsukasa

+0

はい、そうかもしれません。 –

関連する問題