當我在閱讀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