标签: global-object

在C++中销毁全局对象和atexit之间的顺序

我想知道可以确定在销毁全局对象和atexitC++ 之间的顺序

我有一个全局对象和注册atexit函数如下:

static MyClass g_class;

void onExit()
{
    // do some destruction
}

int main()
{
    atexit(onExit);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我发现onExit()之前MyClass::~MyClass()在Visual Studio 2012和gcc4.7.2中调用过.我确定onExit在全局对象(如g_class)销毁之前总是会调用它吗?

我想知道全局对象寄存器顺序和atexit寄存器顺序使用相同的顺序表.或者全局对象顺序和atexit顺序之间没有关系?

编辑:对不起,我写错了.整理示例代码时我很困惑.onExit()在~MyClass()之前调用.

c++ atexit order-of-execution global-object

16
推荐指数
1
解决办法
3493
查看次数

ReferenceError和全局对象

In javascript window是全局对象,这意味着全局范围中的每个对象都是子对象window.那么为什么我得到这个结果:

console.log(window.foo); // No error, logs "undefined".
console.log(foo);        // Uncaught ReferenceError: foo is not defined.
Run Code Online (Sandbox Code Playgroud)

小提琴

那两行应该是一样的,不应该吗?

javascript window referenceerror global-object

6
推荐指数
1
解决办法
8843
查看次数

检查是否已在JavaScript中覆盖全局属性/函数

JavaScript可以轻松覆盖全局对象的属性和功能.我想找到一种方法来检查全局属性的原始版本是否已被替换.

考虑有人把它放在他们的HTML中:

<script type="text/javascript">
    window.encodeURIComponent = eval;
</script>
<script type="text/javascript" src="myscript.js"></script>
Run Code Online (Sandbox Code Playgroud)

如果myscript.js在某处调用encodeURIComponent函数,它现在将表现得不可预测.那么有一种方法可以检查myscript.js内部是否有人在使用之前覆盖了该功能?

javascript overwrite global-object

5
推荐指数
2
解决办法
2744
查看次数

模块模式中的这个关键字?

我刚刚开始在一家新公司工作,并注意到在他们的很多JS中我看起来完全没错.我有点犹豫要提起它而不确认这是错的,因为我很小,我不是JS专家,这只是我的第二天,我不想看起来很愚蠢.

所以,通常我希望模块模式看起来像:

MODULENAME = MODULENAME || {};

MODULENAME.SUBMODULENAME = (function() {
    var bla = {};

    bla.somefunction = function() {
        //do stuff
    };

    //add more stuff to bla
    return bla;
}());
Run Code Online (Sandbox Code Playgroud)

他们的代码是:

MODULENAME = MODULENAME || {};

MODULENAME.SUBMODULENAME = (function() {
    var that = this;

    that.somefunction = function() {
        //do stuff
    };

    //add more stuff to that
    return that;
}());
Run Code Online (Sandbox Code Playgroud)

现在当然因为函数没有作为带有new关键字或方法的构造函数被调用,所以它this被绑定window并且它们被定义thatthis.因此,他们基本上将所有内容转储到全局对象中,并且所有子模块名称实际上都是别名window.有没有理由有人想要这样做?或者这对我来说真的是错误的吗?

编辑:

我在放置var子模块定义之前犯了一个错误,最初我写的东西略有不同,忘记删除了var.我试图让这个例子更加清晰,希望现在我的意思更明显.

编辑2:

此外,我已经看过在Firebug中执行的脚本,他们肯定是在添加所有东西 …

javascript design-patterns global-object

5
推荐指数
1
解决办法
1631
查看次数

关于如何使画布上的绘图不重叠在另一张之上有什么见解吗?

这是一个非常直接和基本的问题。我认为因为这一定是一个经常发生的动作,所以必须有功能,但我找不到它?有吗?如果没有的话有人知道怎么做吗?

javascript canvas erase html5-canvas global-object

5
推荐指数
1
解决办法
281
查看次数

为什么 GitHub C++ Core Guideline 说全局对象比单例更好?

Github C++ 核心指南说:

全局对象通常比单例更好。

我一直认为相反。从那以后在 C++ 中发生了什么变化?或者可能只是另一个错字?

c++ singleton global-object

2
推荐指数
1
解决办法
477
查看次数

c ++中对全局对象的需求是什么?

我知道C++也允许创建类和结构的全局对象.

#include <iostream>
using std::cout;
class Test
{
    public:
        void fun()
        {
            cout<<"a= "<<a;
        }
    private:
        int a=9;
};
Test t;  // global object
int main()
{
    t.fun();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

何时何地我应该使用全局对象?全局对象是否有特定用途?请帮我.

c++ global-object

1
推荐指数
1
解决办法
120
查看次数