在JavaScript中创建对象的多个实例时出错

时间:2014-05-24 20:28:47

标签: javascript object constructor

我想在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/

1 个答案:

答案 0 :(得分:1)

您的私人变量实际上是全局变量,因为您错过了关键字var。这意味着您创建的任何对象都在使用和修改variable3function3_private的同一个实例,并调用

function3_private();

工作并打印出variable3的值。