标识符
一.组成:”_”,”$”,数字(但不能以数字为首)
二.字符编码:Unichode,又叫统一编码制,是国际上通用的16位编码制
常量
一.定义:const 常量名
二.特点:只能在初始化时赋值,其他时候不能
注释
多行(块)注释:有其他语言没有的特点—–可嵌套注释
数据类型
A.数值类型:包含整数,浮点数;
(1)整数:二进制,十进制,八进制(0为首),十六进制(0x为首)
(2)浮点数:必须是数字+小数点(或者e)
<二进制,八进制,0均为数字>
B.布尔类型:true,false
C.字符串类型:””或’’均可
D.数组类型
E.对象类型
数据类型字面量:即常值
类型转换
A.布尔类型,数值类型—->字符串:(以变量num为例)
(1)num.toString();
(2)num+””;
B.字符串转换成数值:
(1)parseInt(字符串,进制),//进制可填2,10,8,16
(2)parseFloat(字符串)
Ps:NaN为无效数值
C.强制类型转换:
(1)Number(value);
(2)Boolean(value);
(3)String(num);
Ps:null表示值为空,undefined表示未声明的变量,或者已声明未赋值的变量,或者不存在的对象
运算符:
A.关系运算符:
“===”严格等于,即必须类型相同,而”==”存在智能转换类型并比较
B.逻辑运算符:
“>>>”无符号右移,“<<”左移,空位用0补
“>>”右移,空位用符号位补
C.其他运算符:
引用运算符:.(引用属性,方法等)
下标运算符:[]
类型判断运算符:instanceof
内存分配运算符:new
ps:
&&:短路与
<<直接在后面加0
控制语句
A.分支语句(又称条件语句):if-else条件语句,switch多分支语句
B.循环语句:while,do-while,for
(1)空循环:for(;;)
(2)遍历循环数组 或集合对象:for(var item in 数组/集合对象)
C.跳转语句:(程序转移):return,break,continue
(1)带标签的break,continue:break/continue label;
Eg:
outer : for(var i=0;i<10;i++)
for(var j=0;i<10;j++){
If(arr[i][j]==0)
continue outer;
}
面向对象
一.特点:
(1)js可创建对象,但不能定义类
(2)在面向对象中,方法要有主体,而函数没有
二.创建对象:
A.使用字面量:
(1)对象字面量:类型JSON(javaScript object notation—-一种轻量级数据交换格式)
(2)特点:无序的“名称,值”对集合
(3)举例:
var HelloWorldLayer = cc.Layer.extend({
sprite:null,
ctor:function () {
this._super();
}
});
B. Object.create()函数复制对象:Object.create(对象)
C. 构造函数
Student=function(num){
this.num=num;
}
cc.log(new Student(3612));//创建一个编号为3612的学生,并输出这个对象
三.对象的方法:
description(),返回对当前对象的描述字符串
常用内置对象
Object:所有对象的继承源
var obj=new Object();
cc.log(obj.toString());
cc.log(obj.constructor);
cc.log(obj.valueOf());
输出依次为:
描述对象的字符串
调用constructor属性,返回对象的构造函数
对象的值
Math
属性
Math.Pi;//圆周率常量
Math.SQRT;//2的平方根
方法
Math.min(num1,num2....);
Math.max(num1,num2...);
Math.random()//0~1之间的小数,其中不包括1
Math.pow(num,power);//num的power次幂
Math.sqrt(num);//平方根
Math.ceil();//向上取整
Math.floor();// 向下取整
Math.round();// 四舍五入
Date
var date=new Date('2016 7 25');
cc.log(new Date());
cc.log(date.toString());
cc.log(date.getYear());//年+1900才是习惯表示法
cc.log(date.getMonth());//月+1才是习惯表示法
cc.log(date.getDay());//0代表星期天
若Chrome出现了以下问题,建议将更新至v50以上版本(包括v50)
若不能通过软件管家等更新,可按以下步骤
Ps:(其他中文乱码问题)
若控制台界面语言是乱码,建议使用Chrome原版(开发者控制台是英文界面)
若控制台输出文字是中文乱码,建议使用UTF-8编码
若在JS函数中,建议使用encodeURIComponent或decodeURIComponent进行编码和解码。
Cocos2d-js的js继承
一.背景:js没有提供类,没有其他语言的类继承制
二.继承:每个js对象都有一个继承原型,可通过prototype属性获得
三.弊端:cocos2d-js早期版本cocos-html中几乎全部api都是模仿cocos2d-x api设计的,而cocos2d-x是C++编写,所以对象,函数比较复杂
四.设计:John Resiq的js继承方法灵感来自于原型继承机制,其具有java等面向对象一样的类概念
五.Class类:根类
Js格式建议
命名
变量:
(1)功能+类型 eg:currentUrl,即当前组件的url地址
(2)常量名全大写,单字用“_”隔开 eg:NUM_TOTAL:10,
(3)对象命名,首字母大写 eg:HelloWorldLayer
方法:
(1)动词+首字母小写
(2)回调方法,handler结尾
(3)事件方法,on为首
注释
每个变量,方法必须有注释
位置
(1)public 方法写在 类内最下面
(2)类内常量在类内首部赋值,否则在类外部赋值
(3)非常量类变量在类内的首部赋null,类的初始化方法中明确赋值
其他
函数参数:若超4个,不如用对象(arguments—传入参数的对象