5.5 Function 类型

函数也是对象,函数名实际上是指向函数对象的指针

5.5.4 函数内部属性

arguments是用于保存函数参数的对象,其拥有一个属性callee,为一个指针,指向arguments所属的函数

function factorial (num) {
    if(num <= 1) {
        return 1;
    }else {
        return num * arguments.callee(num - 1);
        //指向factorial
    }
}

函数有一个caller属性,指向引用当前函数的函数

function outer () {
    inner();
}
function inner () {
    console.log(inner.caller); //指向outer
}
outer();

5.5.5 函数属性和方法

函数有一属性length,表示函数希望接收的命名参数的个数

function sayName (name) {
    console.log(name);
}
function add (num1,num2) {
    return num1 + num2;
}
function sayHi () {
    console.log('hi');
}
console.log(sayName.length); //1
console.log(add.length); //2
console.log(sayHi.length); //0

函数有两个方法 apply 和 call
apply接收两个参数,作用域和参数数组
apply接收两组参数,作用域和其余参数

function add (num1,num2) {
    return num1 + num2;
}
console.log(add.apply(this,[1,2])); //3
console.log(add.call(this,1,2)); //3

上述方法也可用于扩充作用域
bind方法,用于绑定this值,之后需要自己执行()

let color = 'red';
let o = {
    color : 'blue'
};
function sayColor () {
    console.log(this.color);
}
let osayColor = sayColor.bind(o);
osayColor();

osayColor()

发布了43 篇原创文章 · 获赞 0 · 访问量 309

猜你喜欢

转载自blog.csdn.net/weixin_44774877/article/details/103838165
5.5