递归:函数自己调用自己
应用:0-100内的求和:
//0-100求和
function sum(s) {
if (s === 100){
return s
} else {
return s + sum(s+1)
}
}
console.log(sum(0));
函数中的arguments.callee和sum.prototype.constructor均指向函数本身。
函数的call方法:call是Function自带的方法,它可以让函数执行,并且改变函数this的指向(它第一个参数可以改变this的指向,第二个及后面的参数用来给函数传实参)
注意:1) call不传参得情况下,this指向不改变。
2) call(null)和call(undefined),this指向均不改变
var box = document.getElementById("box");
function change(color) {
this.style.backgroundColor = color;
}
box.onclick = function () {
change.call(this,"red")
}
可以使用以下3种方法改变this的指向并让函数执行:
var box = document.getElementById("box");
function change(n) {
this.innerHTML = parseInt(this.innerHTML)+n;
};
//使用自定义属性
box.onclick = function () {
this.change = change;
this.change(1);
};
//使用call方法
box.onclick = function () {
change.call(this);
}
//使用箭头函数
var change=()=> {
this.innerHTML++
};
box.onclick = function () {
change();
}
函数的apply方法:函数的apply用法和call是一样的,但是其传参数的形式不一样,他可以传数组,对象等等。
函数的bind方法:bind是Function自带的方法,它不能让函数执行,但是可以改变函数this的指向(它第一个参数可以改变this的指向,第二个及后面的参数用来给函数传实参)
注意:1) bind不传参得情况下,this指向不改变。
2) bind(null)和bind(undefined),this指向均不改变