我不是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事情要担心和为什么。
答案 0 :(得分:3)
我会说这是一个dojo的事情,它与dojo如何实现类类系统有关。要了解为什么这很重要,请查看最近的一个问题:Dojo instances of same widgets are not saparated。
如前所述,数组和对象是跨实例共享的,因此如果您不想要这种行为,则应在构造函数中初始化它们。 Dojo docs on declare
答案 1 :(得分:1)
您的约束将是xxxTextBox的所有实例的共享对象,除非在构造函数中为约束分配新对象:
this.constraints = {};
这是因为约束值是原型对象的一部分,因此这是一个javascript的东西。分配this.constraints后,您会使用对象拥有的本地副本模糊对共享约束的引用。