1. 将js中代码单独放到一个js文件中

不建议此游戏抽取出太多的js文件,比如Food一个js,Snake一个js,Game一个js。
原因主要有:
1.多个js文件之间会有引用关系,html页面引入js的时候有顺序要求
2.项目部署到服务器的时候,用户通过浏览器请求项目的时候会请求多个js文件,造成网页整体体积变大。

2. js代码的压缩

我们需要把js代码中的注释、空格等信息压缩,尽可能生成一个比较小的js文件,以供客户端使用
http://tool.oschina.net/jscompress/
//自调用函数传入window会被压缩
(function (window) {
var document = window.document;
}(window))
//将来代码压缩的时候,会把 function (window) 压缩成 function (w)

3. 函数内 this 指向的不同场景

函数的调用方式决定了 this 指向的不同:

调用方式 非严格模式 备注
普通函数调用 window 严格模式(“use strict”;)下是 undefined
构造函数调用 实例对象 原型方法中 this 也是实例对象
对象方法调用 该方法所属对象
事件绑定方法 绑定事件对象
定时器函数 window

//普通函数
function f1(){
console.log(this); //this 指的是window对象
}
f1(); //调用函数
//构造函数
function Person(name,age){
this.name = name; //this指的是实例对象
this.age = age;
this.say = function(){
console.log(this); //this是调用say方法所属对象
}
}
var p = new Person(“张三”,19); //通过new调用构造函数创建对象
p.say(); //通过对象调用实例方法
//定时器
setTimeInterval(function(){
console.log(this); //this 指的是window对象
},1000)
//一句话:this指的是方法的调用者 .
//比如 window.f1() f1函数中的this就是window