在JavaScript中创建新对象实例而不覆盖旧对象实例

在JavaScript中创建新对象实例而不覆盖旧对象实例,javascript,jquery,Javascript,Jquery,我有一个带有原型的函数,它包含带有变量/常量的对象和其他函数。其中一个函数包括一个初始化函数,用于设置原型内部的变量/常量。对于我来说,当只创建一个对象实例时,这非常有效。但是,当创建多个实例时,旧实例将被忽略,而不是创建一个纯粹的新对象 与往常一样,下面的编码示例最好地说明了这一点 var objectTest=函数{}; objectTest.prototype={ _参数:{ a: }, init:函数a{ var self=这个; 自身参数a=a; } }; var object1=新

我有一个带有原型的函数,它包含带有变量/常量的对象和其他函数。其中一个函数包括一个初始化函数,用于设置原型内部的变量/常量。对于我来说,当只创建一个对象实例时,这非常有效。但是,当创建多个实例时,旧实例将被忽略,而不是创建一个纯粹的新对象

与往常一样,下面的编码示例最好地说明了这一点

var objectTest=函数{}; objectTest.prototype={ _参数:{ a: }, init:函数a{ var self=这个; 自身参数a=a; } }; var object1=新的objectTest; object1.initfoo; var object2=新的objectTest; object2.initbar $Testing.htmlobject1._params.a;
最初这个问题与不变性有关。因为您在原型内部创建了_params对象,所以它在所有实例之间共享,因为原型也在实例之间共享。避免这种情况的方法是只在原型中创建函数,而在构造函数中初始化字段

var objectTest=函数{ 此参数为{ a: }; }; objectTest.prototype={ init:函数a{ var self=这个; 自身参数a=a; } }; var object1=新的objectTest; object1.initfoo; var object2=新的objectTest; object2.initbar $Testing.htmlobject1._params.a;
最初这个问题与不变性有关。因为您在原型内部创建了_params对象,所以它在所有实例之间共享,因为原型也在实例之间共享。避免这种情况的方法是只在原型中创建函数,而在构造函数中初始化字段

var objectTest=函数{ 此参数为{ a: }; }; objectTest.prototype={ init:函数a{ var self=这个; 自身参数a=a; } }; var object1=新的objectTest; object1.initfoo; var object2=新的objectTest; object2.initbar $Testing.htmlobject1._params.a;
初始化每个实例的原型都是相同的…原型总是相同的。因为init函数确实会更改原型值,这会影响object1和Object2每个实例的原型都是相同的…原型将始终是相同的。因为init函数确实会更改原型值,所以这会影响object1和object2