引用类型值和初始化

时间:2013-05-22 05:56:46

标签: javascript dojo

我不是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事情要担心和为什么。

2 个答案:

答案 0 :(得分:3)

我会说这是一个dojo的事情,它与dojo如何实现类类系统有关。要了解为什么这很重要,请查看最近的一个问题:Dojo instances of same widgets are not saparated

如前所述,数组和对象是跨实例共享的,因此如果您不想要这种行为,则应在构造函数中初始化它们。 Dojo docs on declare

答案 1 :(得分:1)

您的约束将是xxxTextBox的所有实例的共享对象,除非在构造函数中为约束分配新对象:

this.constraints = {};

这是因为约束值是原型对象的一部分,因此这是一个javascript的东西。分配this.constraints后,您会使用对象拥有的本地副本模糊对共享约束的引用。