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;不会在再出现。

上一篇 下一篇

猜你喜欢

热点阅读