匿名函数就是没有名字的函数(了解)
function(){}//报错,需要和表达式使用。
var foo=function(){}
一般是在函数表达式内使用,不能单独存在。
自调用函数(了解)
这个自调用函数会在书写的位置上执行一次。
(function(){})()
函数的类型
检测方式typeof 函数的类型是function
function foo() {}
console.log(typeof foo)//"function"
函数注释的使用
在函数前输入/**点击回车,可以输入一些跟函数参数返回值相关的标注。
递归(了解)
函数在函数内调用自己,这种形式我们称为递归
function fun(){
cosole.log("今天中午吃什么");
fun();
}
fun();//使用递归的时候注意不要造成死循环。
求5的阶乘
function jiecheng(n){
if(n<=1){
return 1;
}else{
return jiecheng(n-1);
//return n*arguments.callee(n-1);
}
}
jiecheng(5);
对象
生活中,抽象和具体的关系
对象是具体的一个东西。
每一个对象都有自身的特征,也都有自身的行为
创建对象的方式:
var obj = {};
var obj = new Object();
添加属性和方法通过对象名.属性名
obj.faceValue = “超高”;
方法跟属性的区别在于,方法中保存的是函数。
obj.sayHi = function(){
alert(“你好”);
};
this
在方法内使用this表示这个方法所属于的对象。
**创建对象的方法*8
1.构造函数
在调用构造函数的时候,调用前加new、
构造函数的作用就是创建对象,在构造函数内需要做的一件事情就是添加属性和方法。
使用this,this就代表创建出来的对象。
构造函数的名字,首字母大写。
function Person(name,age){
this.name=name;
this.age=age;
this.sayhi=function(){
alert("大家号我是"+this.name)
}
}
var sisi=new Person("sisi",18);
2.对象字面量方式
var obj = {}; 对象字面量
可以直接在{}内添加属性和方法,多个属性间使用逗号分隔
var obj={
name:"sisi",
age:"18",
sayhi:function(){}
}
对象属性的访问方式
obj.name
obj[“name”] 必须写双引号
访问的效果是相同的。
循环对象的方法-forin
对象是一种无序的数据存储形式
想要获取对象中所有的值通过for。。in
for(var key in obj){
key 在forin中表示某一个属性名,是字符串格式
obj[key] 表示obj中key属性的属性值
}
```
var obj={
name:"sisi",
age:"18",
sayhi:function(){}
}
for(var k in obj){
console.log(obj[k]);
}
json 数据存储格式
var obj = {
“name”:”张三”
};
对象的属性如果不存在,访问时值为undefined
内置对象-数组
var arr=[1,2,3,4];
1.数组常用的方法。
- arr.join(输入一个字符串) join方法返回一个连接后的字符串
不传参数返回的结果1,2,3,4 ,如果不想要逗号,可以传入一个空字符串。 - arr.toString() 可以将arr转换为字符串 ,不更改原有数组。
var arr=[1,2,3,4];
console.log(arr.tostring())//"1,2,3,4";
console.log(arr.join("-"))//"1-2-3-4"
- arr.push()可以项数组最后添加一个或多个新项,返回添加后的数组的元素个数。
- arr.pop() 从数组最后删除一个元素,并且返回这个元素。
+arr.unshift() 从数组前面插入一个或多个元素,注意插入多个的顺序。 返回添加后的数组的元素个数 - arr.shift(); 从数组前面删除一个 ,返回删除的元素
var arr=[1,2,34];
console.log(arr.push(1,2));//5,返回插入后数组的个数
console.log(arr.pop());//2返回删除的元素
console.log(arr.unshift("1", 2));//6返回数组的个数
console.log(arr.shift());//"1"返回杀出的元素
- indexOf(参数1,参数2(可选))
参数1为要寻找的值,参数2可选,为寻找的起始位置。 返回找到的索引值(只能找到一个)。
如果没找到,返回-1.ie6-ie8的不兼容 - astIndexOf(参数1,参数2(可选))
使用方式与indexOf相同,不同点为从数组最后开始查找。ie6-ie8不兼容 - arr.reverse() 翻转, 可以将数组所有元素翻转,改变原数组
- arr.sort() 排序 改变原数组。
对字符串排序是按照首字母排序。
对数值排序也是按照第一位排序,想要正序或倒叙可以传入函数参数
var arr=[1,2,34];
arr.sort()//正序排序
arr.sort(function(a,b){
return b-a;
})//倒序排序
arr.sort(function(a,b){
return a-b;
})//正序排序
- contact()可以传入多个参数,连接在arr后,返回新数组,不改变原有数组。
复制数组:arr.concat(); 如果不传参数,也会返回一个和原数组相同的新数组
var arr1=[1,3,4,6];
var arr2=[10,3,4,6];
console.log(arr1.concat(arr2));//arr1和arr2连接
arr1.concat(1,2);//
arr1.concat()//相当于arr1的复制。
arr.slice(start,end) 接受两个参数 两个参数都是索引值,可以从arr中拷贝一部分元素,含start不含end。 返回拷贝的部分,
不改变原数组
arr.splice(start,len,..) start表示截取的起始位置,len表示要截取多少个元素,后面的所有参数是可选的,表示将后面的参数添加到删除掉的位置。
返回删除的元素,改变原数组
。
清空数组的三种方式
arr.length = 0;
arr.splice(0,arr.length);
arr = [];
日期对象(了解)
Date
var date = new Date();
日期转换成毫秒
var date=+new Date();
var date1=Date.parse("2017-02-10");
Date常用的方法。
date的方法,不用记
getTime() 返回毫秒数和valueOf()结果一样
getMilliseconds()
getSeconds() 返回0-59
getMinutes() 返回0-59
getHours() 返回0-23
getDay() 返回星期几 0周日 6周6
getDate() 返回当前月的第几天
getMonth() 返回月份,从0开始
getFullYear() 返回4位的年份 如 2016
字符串的方法
基本包装类型
我们发现基本数据类型字符串具有属性,但是字符串又不是对象。
其实js中有一种称为基本包装类型的对象,在我们使用字符串的属性或方法的时候,会创建一个基本包装类型对象,使用这个对象的属性和方法,使用完毕后这个对象立即销毁。
length长度属性,字符串的字符长度
访问某个字符的方式
str.charAt(索引值)
str[索引值] h5添加的,兼容性有问题
位置方法
indexOf(value,start) value要检索的字符,start是起始索引值。
lastIndexOf(value,start) 从后面进行检索
操作方法
连接字符串 str.concat(“1”) 但是+更常用
截取字符串str.slice(2, 5);
截取字符串,与slice相似,一般使用slice str.substring(2, 5);
按照长度截取字符串 str.substr(1, 4);
大小写转换
转换为大写str.toUpperCase();
转换为小写str.toLowerCase();
分割字符串 str.split(“-“);
replace(参数1,参数2) 将字符串中的参数1部分更换为参数2,并且返回一个新字符串。