2017-02-10 3 views
1

dojoクラス(AMD)で以下のような機能を探しています。dojoでget(getter)キーワードを使用する方法

一度値_fooが初期化されると、ユーザーはコンソールから_fooまたはfooの値を変更できなくなります。我々は、それがデバッグコンソール内からの変更はない値を作るためにerrors.howを解析与えているbuild.sh道場を使用してクラスを構築しようとしたとき、私は上記のように宣言し

define["dojo/_base/declare", "dojo/request", "dojo/_base/lang"], 
      function(declare, request, lang) { 
      var _foo = 123; 
      return declare("fooClass", null, { 
       get foo() { return _foo; } 
     }); 
     }); 

のように道場クラスでこれを達成するにはどうすればよいですdojo

+0

デバッガコンソールを開いているユーザーがvar _foo = 123にブレークポイントを設定できるかのように、このソリューションでは本当に有利ではありません。いつでもその値を変更することができます。 – GibboK

答えて

0

ユーザーがデバッガコンソールを開いた場合のように、ソリューションに実際に利点はありません。開発者はいつでも実行時にブレークポイントを設定してその値をいつでも変更できます。

実際にコードでは、クロージャの例を示しています。 クロージャを使用するとvar _foofunction()の中に隠されるため、開発者はそのjsコード内でその値を取得できなくなります。

それでも、デバッガコンソールを使用して簡単なブレークポイントを追加してアクセスすることはできます。

getterとsetterをdojoに使用するのが面白い場合は、こちらをお読みください。


(fooという名前の属性のために、この例では)カスタムゲッターやセッターを指定するには、命名規則道場は次のとおりです。

_setFooAttr()_getFooAttr()

例:あり

require([ 
    "dojo/_base/declare", "dojo/dom-style", "dojo/parser", "dojo/ready", 
    "dijit/_WidgetBase", "dijit/_TemplatedMixin" 
], function(declare, domStyle, parser, ready, _WidgetBase, _TemplatedMixin){ 

    declare("HidePane", [_WidgetBase], { 
     // parameters 
     open: true, 
     // custom setter 
     _setOpenAttr: function(/*Boolean*/ open){ 
      this._set("open", open); 
      domStyle.set(this.domNode, "display", open ? "block" : "none"); 
     } 
    }); 

    ready(function(){ 
     parser.parse(); 
    }); 
}); 
+0

私はそれが正しいとは思わない、ユーザーはまだvar myPane = new HIdePane()のようにデバッグコンソールから "open"という値を変更できます。ユーザーはmyPane.openを使用して値を変更できます。 –

+0

@DurgaPrasadはい、はっきりとjavascriptのプライベートプロパティはありません。あなたが達成できる可能性のある方法はクロージャを使うことです。しかし、デバッグコンソールでアクセス可能なクロージャーIDでさえあります。あなたは本当に何を達成しようとしていますか? – GibboK

+0

@DurgaPrasad私の編集をお読みください? {; //プライベート変数 リターン{ GET fooの(){戻り_foo;} }; するvar _foo = 123}何window.appは=(関数()は次のように私たちは、民間達成することができます – GibboK

関連する問題