Я был несколько дней без инета и меня заинтересовал cnavas. Решил посмотреть в программе Zeal (брограмма-сборник документации чуть ли не обо всём)  что там написано и я не понял несколько вещей:
0. Почему метод save используется до того как чтото нарисовать? Вот один из тех примеров:
function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  // draw a simple rectangle, but scale it.
  ctx.save(); // я вот тут не понимаю, зачем сохранять "ничего"(наверное правильнее говрить "пустой холст" но я в этом не уверен)?
  ctx.scale(10, 3);
  ctx.fillRect(1, 10, 10, 10);
  ctx.restore();// и зачем это "ничего" восстанавливать?
  // mirror horizontally
  ctx.scale(-1, 1);
  ctx.font = '48px serif';
  ctx.fillText('MDN', -135, 120);
}
1. Почему нельзя объект, например четырехугольник или круг, сохранить в переменную чтобы легче  было с ним обращатся? Например как в библиотеке sfml в С++  
CircleShape circle(76,60);
circle.setOutlineThickness(2);
circle.setOutlineColor(gray);
circle.move(33,126);
Или может лучше использовать для этого какую-нибудь библиотеку? Если да, то какую лучше?