-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

3

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

正如那里提到的,数组和对象在实例之间共享,所以如果你不想要这种行为,你应该在你的构造函数中初始化它们。关于声明的 Dojo 文档

于 2013-05-22T12:13:21.143 回答
1

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

this.constraints = {};

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

于 2013-05-22T10:59:16.563 回答