-2

私はJSの第一人者ではありません。今日、コード レビュー中に、以下のコードでは参照型の値をコンストラクターで初期化する必要があると言われました。これは、制約を参照して何らかの形でこれを変更することを意味します: {}

define(["dojo/_base/declare",
    "dijit/form/CurrencyTextBox",
    "xxxx/util/currencyUtil",
    "./_InputWidgetMixin",
    "../secure/_SecureWidgetMixin"
],
    function (declare, xxxTextBox, xxxUtil, _InputWidgetMixin, _SecureWidgetMixin) {

        return declare("xxx.widget.input.xxxTextBox", [xxxTextBox, _InputWidgetMixin, _SecureWidgetMixin], {

            constraints: {},

            reset: function () {
                this._set("value", this.resetValue);
            },

これが何を意味するのか、なぜこれを移動する必要があるのか​​ 、それがDojoのことなのか、それとも単純なJSのことなのか、そしてその理由がわからない.

4

2 に答える 2

1

コンストラクターで新しいオブジェクトを制約に割り当てない限り、制約は xxxTextBox のすべてのインスタンスで共有オブジェクトになります。

this.constraints = {};

これは、制約値がプロトタイプ オブジェクトの一部であり、したがってこれが JavaScript のものであるためです。this.constraints を割り当てると、オブジェクト自身のローカル コピーを使用して共有制約への参照がわかりにくくなります。

于 2013-05-22T10:59:16.563 に答える