JS函数的属性

1.arguments.calleejavascript

        //经典的阶乘(递归)函数
        function factorial(num) {
            if (num <= 1) {
                return 1;
            } else {
                return num * factorial(num - 1);
            }
        }
        //消除函数名的耦合现象
        function factorial(num) {
            if (num <= 1) {
                return 1;
            } else {
                return num * arguments.callee(num - 1);//函数内部属性 [callee]
            }
        }
        var trueFactorial = factorial;
        factorial = function () {
            return 0;
        };
        alert(trueFactorial(5));//120  使用callee属性 接触函数名耦合状态 能够继续使用递归 不然返回0
        alert(factorial(5));    //0

2.Length:表示函数但愿接收的命名参数的个数java

3.prototype:在建立自定义引用类型以及实现继承时,该属性的做用极为重要,该属性不可枚举,所以使用for-in 没法发现数组

方法:app

1.apply()和call()函数

  用途:在特定的做用域中调用函数,等于设置函数体内this对象的值this

        function sum(num1, num2) {
            return num1 + num2;
        }
        function callSum(num1, num2) {
            return sum.call(this, num1, num2);//明确传入每个参数
        }
        function callSum1(num1, num2) {
            return sum.apply(this, arguments);//传入arguments对象
        }
        function callSum2(num1, num2) {
            return sum.apply(this, [num1, num2]);//传入数组
        }

        alert(callSum1(10, 10));//20
        alert(callSum2(10, 10));//20

2.bind():建立一个函数的实例,其this的值会被绑定到传给bind()函数的值spa

      window.color = "red";
        var o = { color: "blue" };
        function sayColor() {
            alert(this.color);
        }
        var objectSayColor=sayColor.bind(o);
        objectSayColor();//blue;
      
相关文章
相关标签/搜索