Javascript 引用类型值和初始化
我不是JS的大师。今天,在一次代码审查中,我被告知,对于下面的代码,引用类型值需要在构造函数中初始化,这意味着以某种方式引用约束进行更改:{}Javascript 引用类型值和初始化,javascript,dojo,Javascript,Dojo,我不是JS的大师。今天,在一次代码审查中,我被告知,对于下面的代码,引用类型值需要在构造函数中初始化,这意味着以某种方式引用约束进行更改:{} define(["dojo/_base/declare", "dijit/form/CurrencyTextBox", "xxxx/util/currencyUtil", "./_InputWidgetMixin", "../secure/_SecureWidgetMixin" ], function (decla
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的东西,以及为什么。除非在构造函数中为约束指定了一个新对象,否则您的约束将在xxxtbox的所有实例中都是一个共享对象: this.constraints={}
这是因为约束值是原型对象的一部分,因此这是一个javascript对象。一旦你分配了this.constraints,你就用对象自己的本地副本模糊了对共享约束的引用。我想说这是dojo的事情,它与dojo如何实现类一样的系统有关。为了理解这一点的重要性,请看一下最近的问题:
如前所述,数组和对象是跨实例共享的,因此如果您不希望出现这种行为,应该在构造函数中初始化它们 非常感谢!这只是关于Dojo(gotchas)需要学习的众多内容之一。