0

(对不起我的英语=/)我在“onload”时创建了一个数组。

(这:

var $ = {
    ratio: 0.7,
    screen: 500,
    margin: 10,
    canvas: document.getElementById("canvas"),
    ctx: document.getElementById("canvas").getContext("2d"),
}

并且$.canvas给出$.ctx'null'。如果我重写它,这项工作

...
canvas: function(){return document.getElementById("canvas")}
...

但是如果我想调用这个变量看起来像这样 $.canvas () 我怎么能在没有'()'的情况下创建这个变量???

4

2 回答 2

2

试试这个:

window.onload = function(){
    window.$ = {
        ratio: 0.7,
        screen: 500,
        margin: 10,
        canvas: document.getElementById("canvas"),
        ctx: document.getElementById("canvas").getContext("2d"),
    }
}
于 2013-02-21T17:26:18.607 回答
1

看起来这是$变量范围的问题。var通过在函数内部用关键字声明它window.onload,它的作用域是局部函数而不是全局作用域。

您可以在 onload 函数之外定义它:

var $; // in the global scope

window.onload = function(){
    $ = {
        ratio: 0.7,
        screen: 500,
        margin: 10,
        canvas: document.getElementById("canvas"),
        ctx: document.getElementById("canvas").getContext("2d")
    };

    console.log($.canvas);
    console.log($.ctx);
};

通过在全局范围内声明它,可以从 onload 函数外部访问它。

小提琴

于 2013-02-21T17:32:44.520 回答