Javascript 未定义错误:使用返回HTML元素的函数创建对象

Javascript 未定义错误:使用返回HTML元素的函数创建对象,javascript,html,scope,undefined,Javascript,Html,Scope,Undefined,我刚刚开始学习Javascript,所以这几乎肯定是一个新手问题。我正在尝试以下方式创建对象: var canvas = { element: function(){ return document.getElementById("bounceCanvas"); }, centerX: element().width / 2, centerY: element().height / 2, }; 但是,我使用IE调试器得到“SCRIPT5009:'元素'未定义” 对象声明

我刚刚开始学习Javascript,所以这几乎肯定是一个新手问题。我正在尝试以下方式创建对象:

var canvas = {
    element: function(){ return document.getElementById("bounceCanvas"); },
    centerX: element().width / 2,
    centerY: element().height / 2,
};
但是,我使用IE调试器得到“SCRIPT5009:'元素'未定义”

对象声明靠近模块的顶部。我知道加载HTML元素可能需要一段时间,所以不要只是说:

element: document.getElementById("bounceCanvas");

我尝试使用一个返回元素的函数,这样每次调用
canvas.element()
都会重新尝试从页面检索该元素。为什么
element()
总是未定义?

使用
this
引用当前对象,然后指示函数,否则函数将在另一个属性上为另一个属性的函数未定义:

var canvas = {
    element: function(){ return document.getElementById("bounceCanvas"); },
    centerX: this.element().style.width / 2,
    centerY: this.element().style.height / 2,
};

这是什么,你能解释一下吗?谢谢C-link。有些进展,但现在我得到了“Object不支持属性或方法'element'”,我试图返回HTML元素的宽度/高度。它应该是我随canvas.element()返回的元素的已定义属性,否?可能是因为我来自不同的编程背景,但是object.method().propertyofobjectreturnedbymethod应该是有效的,不是吗?这个.element().style.width应该可以工作。。。您也可以查看getComputedStyle google…感谢您的帮助C-link。仍然无法让它工作,但你回答了最初的问题