Javascript 将主对象的引用传递给另一个对象

Javascript 将主对象的引用传递给另一个对象,javascript,Javascript,我创建了我正在处理的一些代码的简化版本。我需要弄清楚如何将实例化对象的引用传递给该对象创建的另一个对象。我无法将对主对象“self”的引用传递给第二个对象,并且实际上能够对其调用函数。希望代码能更清楚地说明: var app = app || {}; (function (m, $, undefined) { m.Counter = function () { var self = this; var pub = {}; pub.tot

我创建了我正在处理的一些代码的简化版本。我需要弄清楚如何将实例化对象的引用传递给该对象创建的另一个对象。我无法将对主对象“self”的引用传递给第二个对象,并且实际上能够对其调用函数。希望代码能更清楚地说明:

var app = app || {};
(function (m, $, undefined) {

    m.Counter = function () {
        var self = this;
        var pub = {};

        pub.total = 0;

        pub.add = function () {
            pub.total++;
        };

        pub.subtract = function () {
            pub.total--;
        };

        pub.status = function () {
            console.log(pub.total);
        };

        pub.spawn = function () {
            var sp = new app.modules.Obj(self);
            return sp;
        };



        return pub;
    };

    m.Obj = function (counter) {
        var pub = {};

        pub.add = function () {
            counter.add();
        };

        return pub;
    };

}(app.modules = app.modules || {}));

var c = new app.modules.Counter();

c.add();
c.add();
c.add();
c.status();

d = c.spawn();
d.add();
c.status();

我想要发生的是,d.add()将增加c的总数。因此,第一个c.status()调用的输出为3,第二个c.status()调用的输出为4

add
不是
self
this
的方法,而是
pub
的方法。您必须将
pub
传递到
app.modules.Obj
,因为它是对象的公共接口。我不太喜欢这种编码技术,因为它会使事情变得不直观,但这只是我个人的看法。那么,当你运行代码时会发生什么,你希望看到什么情况发生?@FelixKling出于好奇和求知欲,你将如何更改此代码以使其更直观。thanks@MattBurland我已经编辑了我的问题,以便在底部显示所需的输出。我将使用一个普通的构造函数,并将方法添加到原型中。请查看和了解以下部分。