Function类型
2017-07-12 本文已影响15人
乐亦栗
作为值的函数
把函数本身作为参数传递
function sum(num) {
return num+10;
}
function box(sum,num) { //把sum函数作为值传入box函数中
return sum(num);
}
var result = box(sum,10);
result;
20
函数的返回值作为参数传递
function box(sum,num) {
return sum+num;
}
function sum(num) {
return num+10;
}
var result = box(sum(10),10);
result;
30
以我小白的眼光来看,此处容易混淆,值得反复思量。
函数的内部属性
arguments
类数组对象,主要用途是保存函数参数,该对象有个名叫callee
的属性,该属性是一个指针,指向当前arguments对象对应的函数;经典的阶乘函数如下:
function factorial(num) {
return num*arguments.callee(num-1);
}
this
this指向当前对象
var color = "red";
function sayColor() {
console.log(this.color);
}
sayColor();
red
var box = {
color: "blue"
}
box.sayColor = sayColor; //相当于把sayColor方法复制给了box
box.sayColor();
blue
//我们可以看一下现在输入box控制台返回的是什么
box;
Object {
color: "blue",
sayColor: sayColor(),
...
}
函数属性和方法
length属性
length属性表示函数希望接收的命名参数的个数
prototype属性
在创建自定义引用类型以及实现继承时,prototype的属性是极其重要的。
每个函数都包含两个非继承而来的方法:apply()和call()
这两个方法作用相同,只是其接收参数的方式不同。其真正强大的地方是能够扩充函数赖以运行的作用域。
js高程,pages:117
function sayColor() {
console.log(this.color);
}
var color = "red";
var box = {
color: "blue"
}
sayColor.call(this);
red
sayColor.call(box);
blue
好处就是:去除耦合关系,例如前面关于this部分的例子中box.sayColor = sayColor;
不会在再出现。