当我在阅读Conway's Game of Life的一些Javascript源代码(here)时,我偶然发现了一些以前从未见过的东西(嗯,我在三周前开始使用Javascript。断章取义,我从C++背景的,我使用Professional JavaScript for Web Developers为指导,以试图了解JS)对嵌套对象文字属性感到困惑
情况是这样的(fiddle):
var Obj = {
canvas: {
context : null,
init : function() {
this.canvas = document.getElementById('canvas');
this.canvas.width = 50;
this.context = this.canvas.getContext('2d');
/* ... */
}
}
}
Obj.canvas.init();
我不明白,这是嵌套对象文字属性的对象文字。我不明白的是this.canvas = document.getElementById('canvas');
部分。我以为我需要声明一个变量,如上面声明的context
,以获取canvas元素。
这很明显,正如小提琴上说的那样,但是,究竟发生了什么?更确切地说,通过使画布成为一个HTML元素对象,为什么我不会丢失它的所有其他属性,如context
?
@Alexander'this'内'Obj.canvas.init()'点' Obj.canvas',而不是'Obj' – Tibos
@Tibos哦,对了,我没有注意到嵌套在画布{}中。谢谢 – Alexander