如何从本地范围创建基于实例的全局对象? [英] How to create global, instance based objects from local scope?

查看:61
本文介绍了如何从本地范围创建基于实例的全局对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用了一个全局对象。我知道使用全局对象的缺点,但在这种情况下我想使用它。

I have a single global object I use. I know the cons of using global objects but in this case I want to use it.

我将此全局对象称为对象管道b.c.它将我的模型分支到我的控制器,反之亦然...也许应该把它称为对象分支...反正......

I call this global object the object pipe b.c. it branches my models to my controller and vice versa...maybe should have called it object branch...anyways...

我犯的错误是我想的我只有一个模型在任何给定时间运行...但我没有,有多个。

The mistake I made is that I thought I only had one model running at any given time...but I don't, there are multiple.

因此我不能使用单个静态实现,我每个模型运行时需要和基于实例的一个,一个全局对象管道。

Hence I can't use a single static implementation, I need and instance based one, one global object pipe per each model running.

这是静态版本。 MC代表型号/控制器。

Here is the static versions. MC stands for Model/Controller.

/********************************************************************************************
 *
 * MC - Model/Controller Types
 *
 *******************************************************************************************/

var MC = {};

/**
 **  Object Pipe
 */

MC.o_p = {
    model  :  'default',
    result :  'continue',
    page   :  {},
    args   :  {},
    server :  {},
    hash   :  localStorage.hash
};

我想做这样的事情:

MC.o_p1 = function() {
    return {
        model  :  'default',
        result :  'continue',
        page   :  {},
        args   :  {},
        server :  {},
        hash   :  localStorage.hash
        }
}

但现在返回对象在本地范围内与任何调用它的对象。

but now the return object is in local scope to whatever called it.

I需要基于全局实例的对象。

I need global instance based objects.

我不确定我是在考虑这个问题还是我在问什么可能?

I'm not sure if I'm over thinking this or what I'm asking is possible?

推荐答案

保管您的包裹私下,并且只有一些访问功能:

Hold your package privately and just have some access functions:

var myModel = (function() {

    var model_vars = {
        model: 'default',
        result: 'continue',
        page: {},
        args: {},
        server: {},
        hash: localStorage.hash
    };

    return function() {
        this.get = function(ele) {
            if (model_vars.hasOwnProperty(ele)) {
                return model_vars[ele];
            }

        };

        this.set = function(ele, value) {
            if (model_vars.hasOwnProperty(ele)) {
                return model_vars[ele] = value;
            }

        };

    };

})();

然后你可以这样做:

Model = new myModel();

DEMO: http://jsfiddle.net/maniator/PSsQ3/

这篇关于如何从本地范围创建基于实例的全局对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆