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;
      
相關文章
相關標籤/搜索