I have a better grasp of encapsulation of objects with Javascript now so I banged my ShaderProgramme object together in one go. The two caveats are; (1) remembering to explicitly use the this. keyword to refer to member attributes and variables, (2) defining whole member functions inside the constructor, not outside like you would in C++. This seemed to be a much cleaner way to go. The third trap is when creating an object from a JSON source; default constructors are not called, and any original object is completely wiped and rebuilt, so you have to remember to add in any member-creation code again after loading from JSON.
I found a nice "cheat sheet" for WebGL that is a little bit more accessible than the Khronos Quick Reference because it retains the comments (says what each function does!). Sometimes it's hard to know which order you should use the functions. Mozilla has a nice introductory tutorial series. It doesn't go beyond the absolute basics, but that's all we need to get started anyway. They've made some common mistakes with regards to what goes inside the rendering loop, and not making it clear how to scale the code up, but I was used to this from OpenGL so dodged a few early trip-ups.
In the last few demos I went over every single OpenGL call with a fine-toothed comb, so it was no problem putting it all together now. Interestingly, all of the standard "glFunctionName" calls are done as methods of the context object in WebGL, rather than being functions from the GL.h file, as they are in C. I used the webgl-utils.js and webgl-debug.js wrappers suggested by Khronos.
WebGL 1.0 use OpenGL ES 2.0 shaders. These are a little different to GLSL 4.2.0, which I have been using lately.
There's a website that benchmarks the most popular Javascript matrix mathematics libraries. I had a look at the Google option, "Closure", but it looks a bit over-kill in terms of the bits and pieces involved. glMatrix looks rather nice. Will try.
There's a lot of mis-information floating around on the Intertubes. This, however, looks okay timer.js.
Matrix transformation, some sort of time step, and more use of uniform variables. Then later, a renderable object, similar to the shader object. This should contain the Vertex Buffer and Vertex Attribute handles, have a draw() operation, know which shader programme that it's supposed to use, and (hopefully) load a mesh from a file.