我想在Javascript中创建一个对象的多个实例。我知道使用Object.create(obj)
或使用new ObjConstructor();
或using ObjFactory();
(感谢@WiktorZychla)会让我创建不同的实例。
我理解与this question的区别,当对象构造函数以某种方式编码时,它们都可以工作。
但是当我在对象构造函数工厂中使用return来使用闭包实现私有变量时,创建的两个实例似乎是相同的。
这是我的对象构造函数:
var obj3 = function () {
variable3 = "Hello World";
function3_private = function () {
return variable3;
};
return {
function3_get : function () {
return variable3;
},
function3_set : function (v) {
variable3 = v;
},
function3_print : function () {
return function3_private();
}
};
};
如何使用此构造函数创建两个不同的实例?或者我应该在构造函数中进行更改以实现相同的目标?
如果我的代码没有遵循,请建议最佳做法。 这是小提琴:http://jsfiddle.net/GcD9n/
答案 0 :(得分:1)
您的私人变量实际上是全局变量,因为您错过了关键字var
。这意味着您创建的任何对象都在使用和修改variable3
和function3_private
的同一个实例,并调用
function3_private();
工作并打印出variable3
的值。