首頁  >  文章  >  web前端  >  淺談javascript 函數內部屬性_基礎知識

淺談javascript 函數內部屬性_基礎知識

WBOY
WBOY原創
2016-05-16 16:18:45902瀏覽

        在函數內部有兩個特殊的特性:arguments 和 this。 arguments是一個類別數組對象,包含傳入的所有參數,
        但是這個物件還有一個名叫callee的屬性,該屬性是一個指針,指向擁有這個arguments物件的函數。

        請看經典的階乘函數範例:

複製程式碼 程式碼如下:

        function Factorial(num) {
            if (num                 return 1;
            } else {
                return num * Factorial(num - 1);
            }
        }
        function Factorial(num) {
            if (num                 return 1;
            } else {
                return num * arguments.callee(num - 1);
            }
        }

        使用第一種方式是沒有錯的,但是耦合性太高,不太好,函數名改變之後,內部的函數名稱也要改變
        第二種方式是低耦合的做法,無論函數名稱怎麼改變都不會影響函數執行。

        this引用的是函資料以執行的環境對象,或也可說是this值

複製程式碼 程式碼如下:

        window.color = "red";
        var o = {color: "blue"};
        function sayColor() {
            alert(this.color);
        }
        sayColor();//red
        o.sayColor = sayColor;
        o.sayColor();//blue

        caller屬性,保存呼叫目前函數的函數的引用,如果是在全域作用域中呼叫目前函數,它的值為Null

複製程式碼 程式碼如下:

 function outer() {
            innter();
        }
        function innter(){
            //alert(innter.caller);//耦合度太高
            alert(arguments.callee.caller);
        }
        outer();

以上就是javascript函數內部屬性的全部內容了,希望小夥伴們能夠喜歡

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn