Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 引用类型值和初始化_Javascript_Dojo - Fatal编程技术网

Javascript 引用类型值和初始化

Javascript 引用类型值和初始化,javascript,dojo,Javascript,Dojo,我不是JS的大师。今天,在一次代码审查中,我被告知,对于下面的代码,引用类型值需要在构造函数中初始化,这意味着以某种方式引用约束进行更改:{} define(["dojo/_base/declare", "dijit/form/CurrencyTextBox", "xxxx/util/currencyUtil", "./_InputWidgetMixin", "../secure/_SecureWidgetMixin" ], function (decla

我不是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的东西,以及为什么。

除非在构造函数中为约束指定了一个新对象,否则您的约束将在xxxtbox的所有实例中都是一个共享对象:

this.constraints={}


这是因为约束值是原型对象的一部分,因此这是一个javascript对象。一旦你分配了this.constraints,你就用对象自己的本地副本模糊了对共享约束的引用。

我想说这是dojo的事情,它与dojo如何实现类一样的系统有关。为了理解这一点的重要性,请看一下最近的问题:


如前所述,数组和对象是跨实例共享的,因此如果您不希望出现这种行为,应该在构造函数中初始化它们

非常感谢!这只是关于Dojo(gotchas)需要学习的众多内容之一。