js温故而知新—Function

函数属性与方法详解
本文深入探讨了JavaScript中函数的内部属性和方法,如arguments.callee和arguments.caller的使用方式,并介绍了函数的两个基本属性length和prototype。此外,还详细讲解了apply和call方法的应用场景,帮助读者更好地理解函数在不同作用域中的调用机制。
  1. 函数内部属性和方法
function factorial(num) {
    if(num<=1){
        return 1;
    }else{
        return num*arguments.callee(num-1);//arguments 的主要用途第保存函数参数,这个对象还有个callee属性,该属性是个指针,指向拥有这个arguments对象的函数

    }
}
console.log(factorial(5));
function outer(){
    inner();
}
function inner(){
    console.log(arguments.callee.caller);//保存着调用当前函数的函数的引用
}
outer();// 输出outer函数的定义

2.函数属性和方法

//函数是对象,因此函数也有属性和方法,每个函数包括两个属性:length,prototype
(function sayName(name){
    console.log(arguments.callee.length);
})();
// 每个函数都包含两个非继承而来的方法:apply()call()。这两个方法的用途都是在特定的作用域中调用函数,实际上等于函数体内this对象的值
//    apply()方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组。其中第二个参数可以使Array的实例,也可以是arguments对象
function sum(num1,num2){
    return num1+num2;
}
function callSum1(num1,num2) {
    return sum.apply(this,arguments);
}
console.log(callSum1(10,20));
function callSum2(num1,num2) {
   return sum.apply(this,[num1,num2]);
}
console.log(callSum2(1,2));
var color="red";
var o= {
    color: "blue"
}
var showColor=function () {
    console.log(this.color);
}
showColor.apply(this);
showColor.call(o);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值