define(,[],)
define('mygame/game', ['hilo/view/Stage', 'hilo/util/Ticker', 'hilo/view/Bitmap', 'mygame/mediator', 'mygame/resource', 'mygame/loading'], function(Stage, Ticker, Bitmap, mediator, resource, loading){
define([module-name?], [array-of-dependencies?], [module-factory-or-object]);
define(name,[依赖模块],回调函数)
其中:module-name: 模块标识,可以省略。
array-of-dependencies: 所依赖的模块,可以省略。
module-factory-or-object: 模块的实现,或者一个JavaScript对象。
从中可以看到,第一个参数和第二个参数都是可以省略的,第三个参数则是模块的具体实现本身。后面将介绍在不同的应用场景下,他们会使用不同的参数组合。
a:{}"与"a:function{}"这有什么不同? a:{} a是个对象 a:function() {} a是个方法
var game = { init:function(){}}
在index.html中,可以用game.init()来调用这个函数/方法,进行初始化.
就是这样的写法是最近几年开始流行的json写法,把所有的function,所有的变量等,都用var o = {x: func, y: "", z: obj}这样的写法来写。
其理解起来可以用类似于class的理解方式,而执行效率相对也是高的。
把初始化工作放在一块,阅读起来更清楚
var 变量 = {函数名:function(入参)}
有一些函数名以下划线开头,是程序员间约定的、模拟python中的私有方法,_method(). 并不是js的语法要求。
typeof, null, undefined, valueOf()
typeof 操作符,检测变量的数据类型
typeof"John"//返回stringtypeof3.14//返回numbertypeoffalse//返回booleantypeof[1,2,3,4]//返回object,数组是一种特殊的对象类型。typeof{name:'John', age:34}//返回object
null 表示“什么都没有”,是只有一个值的特殊类型,表示一个空对象引用。
可以设置null来清空对象。
undefined 也可以清空对象,是一个没有赋值的变量,类型是undefined.
所以,null和undefined 值相等,类型不同。
typeofundefined// undefinedtypeofnull// objectnull===undefined// falsenull==undefined// true
被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。 标签的一个常见应用就是用来表示计算机的源代码。 可以导致段落断开的标签(例如标题、p 和 address 标签)绝不能包含在 pre 所定义的块里。
ts文件的编译 1.全局模式安装ts编译器 npm install -g typescript (备注:安装方式:1全局方式:命令行。2本地安装:require方式) 在cmd对应目录下执行tsc xx.ts 可以生成对应的xx.js文件 然后用node xx.js输出 有些ts文件用的还是js的语法,所以可以直接用node xx.ts
2.全局模式安装ts-node编译器 npm install -g ts-node 直接用ts-node执行ts文件
前端越来像桌面系统,代码变庞大,急需模块化开发。但是js不支持类,更无论模块了。
开发人员做类模块的努力。
// game.js....bindEvent:function(){varthat =this; mediator.on('resource:loaded',function(event){ loading.loaded(event.detail.num); }); ...
bindEvent 绑定元素 mediator 中间者,协调者,
//mediator.jsvarmediator =Class.mix({}, EventMixin);
1.Module Design Pattern模块模式,立即执行方式实现 (function(){})(); 2.Singleton Design Pattern单例模式,
varprinter = (function(){varprinterInstance;functioncreate(){return{turnOn:functionturnOn(){console.log('working') } } }return{getInstance:function(){if(!printerInstance) { printerInstance = create(); }returnprinterInstance; } } })()printer.getInstance().turnOn()// output: working
3.Observer Design Pattern观察者模式,当应用的一个部分变动时,其他部分也会更新。 4.Constructor Pattern构造函数模式 5.Command Pattern命令模式 设计模式 参考链接
// Class.jsvarmix =function(target){for(vari =1, len =arguments.length; i < len; i++){varsource =arguments[i], defineProps;。。。
mix “混合”的意思
方法一:varfoo =function(){//code }方法二:functionfoo(){//code }
主要区别“提前”(hoist)行为。 the Google style guide 建议我们采用方法一。 编译后变量foo会被提前,但是它的赋值并不会提前,匿名函数只有在使用的时候才被初始化。
定义函数时用 var foo = function () {} 和 function foo() 有什么区别
// Class.jsdefine('hilo/core/Class',function(){varClass =function(){varcreate =function(properties){ }; ... ...varmix =function(target){ }; }();returnClass;});
网友评论