Пока я читал исходный код Javascript (here) Conway's Game of Life, я наткнулся на то, что я никогда раньше не видел (ну, я начал с Javascript три недели назад. контекста, я происхожу из фона C++ и я использую Professional JavaScript for Web Developers в качестве руководства, чтобы попытаться понять, JS)Confused о свойствах литералов вложенных объектов
Это ситуация (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