Edit in JSFiddle

    
        function run(game, ctx, w, h) {
            game.print(ctx, w, h);
            game.nextGen();
         
            return 0;
        }
 
        function GameOfLife() {
            var x = 0;
            var y = 0;
            var n = 0;
            var i = 0;
            var dx = -1;
            var dy = -1;
         
            this.init = function(turns, width, height) {
                this.board = new Array(height);
                var x = 0;
                for (x = 0; x < height; x++) {
                    this.board[x] = new Array(width);
                    var y = 0;
                    for (y = 0; y < width; y++) {
                        this.board[x][y] = Math.round(Math.random());
                    }
                }
                this.turns = turns;
            };
         
            this.nextGen = function() {
                this.boardNext = new Array(this.board.length);
                for (i = 0; i < this.board.length; i++) {
                    this.boardNext[i] = new Array(this.board[i].length);
                }
                for (x = 0; x < this.board.length; x++) {
                    for (y = 0; y < this.board[x].length; y++) {
                        n = 0;
                        for (dx = -1; dx <= 1; dx++) {
                            for (dy = -1; dy <= 1; dy++) {
                                if (dx === 0 && dy === 0) {} else if (typeof this.board[x + dx] !== 'undefined' && typeof this.board[x + dx][y + dy] !== 'undefined' && this.board[x + dx][y + dy]) {
                                    n++;
                                }
                            }
                        }
                        var c = this.board[x][y];
                        switch (n) {
                        case 0:
                        case 1:
                            c = 0;
                            break;
                        case 2:
                            break;
                        case 3:
                            c = 1;
                            break;
                        default:
                            c = 0;
                        }
                        this.boardNext[x][y] = c;
                    }
                }
                this.board = this.boardNext.slice();
            };
         
            this.print = function(ctx, w, h) {
                if (!w) {
                    w = 8;
                }
                if (!h) {
                    h = 8;
                }
                for (x = 0; x < this.board.length; x++) {
                    var l = "";
                    for (y = 0; y < this.board[x].length; y++) {
                        if (this.board[x][y]) {
                            // x and y reversed to draw matrix like it looks in source
                            // rather than the "actual" positions
                            ctx.fillStyle = "orange";
                        } else {
                            ctx.fillStyle = "black";
                            ctx.fillRect(y * h, x * w, h, w);
                        }
                    }
                }
            };
         
            this.start = function(ctx, w, h) {
                var t = 0;
                for (t = 0; t < this.turns; t++) {
                    this.print(ctx, w, h);
                    this.nextGen();
                }
            };
         
        }
         
        function init() {
        // Change document title and text under canvas
        document.title = "Conway's Game of Life";
     
        // Setup game boards for Conway's Game of Life
        var blinker = new GameOfLife();
        blinker.board = [
            [0, 1, 0],
            [0, 1, 0],
            [0, 1, 0]];
     
        var glider = new GameOfLife();
        glider.board = [
            [0, 0, 0, 0, 0, 0],
            [0, 0, 1, 0, 0, 0],
            [0, 0, 0, 1, 0, 0],
            [0, 1, 1, 1, 0, 0],
            [0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0]];
     
        var random = new GameOfLife();
        random.init(null, 8, 8);
     
        // Get canvas contexts or return 1
        blinker.canvas = document.getElementById('blinker');
        glider.canvas = document.getElementById('glider');
        random.canvas = document.getElementById('random');
        if (blinker.canvas.getContext && glider.canvas.getContext && random.canvas.getContext) {
            blinker.ctx = blinker.canvas.getContext('2d');
            glider.ctx = glider.canvas.getContext('2d');
            random.ctx = random.canvas.getContext('2d');
        } else {
            return 1;
        }
     
     
        // Run main() at set interval
        setInterval(function() {
            run(glider, glider.ctx, 25, 25);
        }, 250);
        setInterval(function() {
            run(blinker, blinker.ctx, 25, 25);
        }, 250);
        setInterval(function() {
            run(random, random.ctx, 25, 25);
        }, 250);
        return 0;
    }
    
  //]]> 
<body> 
  <form> 
    
    3x3 Blinker<br /> 
    <canvas id="blinker" width="75" height="75"> 
        No canvas support found!
    </canvas><br><br> 
    6x6 Glider<br> 
    <canvas id="glider" width="150" height="150"> 
        No canvas support found!
    </canvas><br><br> 
    8x8 Random<br> 
    <canvas id="random" width="200" height="200"> 
        No canvas support found!
    </canvas>
    <br /> 
    <input type="button" value="start" onclick="init();"/>
</form> 
</body>