函数补充
1.arguments
arguments对象里面保存这方法的所有参数
arguments对象里面有个一个callee方法,该方法指向当前方法本身
functioncalc(num){
if(num===1){
return num
}
// 因为arguments.callee 就时 指向当前方法本身。
// 这样的做的好处是,防止外部方法名修改后,导致递归调用失效。
let sum=num+arguments.callee(num-1)
return sum
}
2.分页方法
//定义一个分页方法,方法的三个参数分别是:原始数组,页码,每页数量
functionpageData(arr,pageIndex,pageSize){
//思路:就是对原始数组中的数据,做截取
//定义截取数据的起始位置l
etstart=(pageIndex-1)*pageSize
//定义截取数据的结束位置
letend=start+pageSizereturnarr.slice(start,end)
}
对象
如果 a.b ,那么a就是对象,b是a的属性
如果 a.c(),那么a就是对象,c是a的方法
对象就是拥有一组属性和方法的集合
定义对象有两种方式:1.采用字面量赋值方式直接定义。2.采用构造函数的方式new一个对象
1.采用字面量赋值方式定义对象
通过对象名.属性,调用对象的属性,可以获取属性的值,也可以修改属性的值,也可以添加新的属性
通过对象名.方法(),调用对象的方法,执行方法里面的代码
案例:
let calc = {
num1:0,
num2:0,
jia(){
console.log(`${this.num1}+${this.num2}=${this.num1+this.num2}`);
},
jian(){
console.log(`${this.num1}-${this.num2}=${this.num1-this.num2}`);
},
cheng(){
console.log(`${this.num1}*${this.num2}=${this.num1*this.num2}`);
},
chu(){
console.log(`${this.num1}/${this.num2}=${this.num1/this.num2}`);
}
}
calc.num1=200
calc.num2=20
calc.jia()
calc.jian()
calc.cheng()
calc.chu()
2.采用构造函数的方式new一个对象
// 构造函数;首先是个函数,这个函数用来创建出对象
// 可以使用系统构造函数object创建一个对象
let obj= new Object()
console.log(obj);
let obj1 = {}
console.log(obj1);
console.log('-----------------------');
//多数情况下,都是先自定义一个构造函数,再通过自定义的构造函数创建出对应的对象
// 可以将构造函数理解成:类
function Student(no,name,age,sex) {
this.no=no
this.name=name
this.age=age
this.sex=sex
}
// 通过类型构造函数乐意创建出无数个对象
let s1=new Student(1001,'张三',20,'男')
console.log(s1);
let s2=new Student(1002,'李四',19,'女')
console.log(s2);