基础语法
变量的声明:
//声明变量一律使用var关键字,但var不是数据类型
var age=12;//数字
var name="Jim";//字符串
name='Kate';//单引号双引号是等价的
var flag=true;//布尔型
var names=["Jim","Kate"];//数组
var obj=new Object();//对象
var a;//只声明,不赋值,为undefined
console.log(a);
var b=null;
console.log(b);
const c=120;//定义一个常量
//c=100;//此时会报错,常量无法再次赋值
var result=1/2;
console.log(result);
比较(== 与 ===)
console.log(5=='5');//仅看是否一样
console.log(5==='5');
console.log('5'==='5');//同时也比较类型是否相同
switch
var week=1;
switch (week){//也可以在每个case后加大括号
case 1:{
console.log("星期一");
break;
}
default:
console.log("无效");
break;
}
for循环(in与of)
for (var index in names) {//获取数组各个元素下标
console.log(index);
console.log(names[index]);
}
for(var name of names){//获取数组的各个元素
console.log(name);
}
自定义对象
- 直接创建法
var student=new Object();//直接创建一个对象
//为此对象添加属性和方法
student.name="Jim";
student.doHomework=function(){
console.log(this.name+"正在做作业。。。");
}
student.doHomework();
- 初始化法
var student = {//在创建的时候直接将该对象初始化,为其添加属性和方法
name:"Jack",
age:12,
doHomework:function(){
console.log(this.name+"正在做作业。。。");
},
eat:function(){
console.log(this.name+"正在吃东西。。。");
}
}
student.eat();
- 构造方法
缺点:由于构造方法本身也是一个方法,如果在它里面再定义其他的方法,会显得十分杂乱。
优点:能够方便根据实际情况来创建属性值不同的对象。(此处可以创建name属性值不同的对象)
function Student(name){//定义一个构造方法
this.name=name;
this.doHomework=function(){
console.log(this.name+"正在做作业。。。");
};
}
//调用构造方法来构建对象
var student = new Student("Lily");
student.doHomework();
- 原型式
缺点:若想创建属性值不同的对象需要重新再定义此构造方法中的name属性。(此处需要重写一遍Student.prototype.name)
优点:由于是在该构造方法外定义其内部的方法,所以看起来会比较整齐不杂乱。
function Student(){//先定义一个构造方法但无任何内容(原型)
}
//后单独为该构造方法添加内容
Student.prototype.name="Make";
Student.prototype.doHomework=function(){
console.log(this.name+"正在做作业。。。");
}
//再调用该构造方法构建对象
var student = new Student();
student.doHomework();
- 混合式
结合了前两种的优点,将自定义的属性写在构造方法内,将对象中的其他方法写在构造方法外。
function Student(name){
this.name=name;
}
Student.prototype.doHomework=function(){
console.log(this.name+"正在做作业。。。");
}
var student = new Student("John");
student.doHomework();