this指針

(1)普通函數中的this指向:
this指向普通函數中的調用者;

<script type="text/javascript">
    //普通函數;、
    /*
        調用普通函數時,this的指向是window;
        本質:window.fn();調用的。
    */
        function fn(){
            console.log(this);
        }
        fn();
        //定義一個全局變量其實就是給window添加屬性
        var name = "王五";
        function obj(){
            var name = "張三";
            console.log(this);
            console.log(this.name);  //this 指向的是window 找window中的name;
        }
        obj();
        //運行結果: window;王五;
        var obj1 = {
            name:"趙六",
            sayName:function(){
                console.log(this.name);//this指向obj1;
            }
        }
        obj1.sayName();  //obj1調用sayName;所以this指向obj1;
        //總結:this在普通函數中的指向;誰調用函數的執行,函數中this就會指向誰。
    </script>

通過call和apply改變函數內部this的指向:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <script type="text/javascript">
        //call是function數據類型提供的一種方法,修改被調函數內部指針的指向。
        var name = "王五";
        var one = {
            name:"張三"
        };
        var two = {
            name:"李四"
        };
        function getName() {
            console.log(this.name);
        }
        //普通函數調用this指向的是window;
        getName();
        //改變函數中的this指針的指向。
        getName.call(one);
        getName.apply(two);
        //js中指針不能指向Null;
        getName.call(null);   //不能被修改。this指向window;
        //call和 apply的作用和用法十一樣的,只是子啊傳遞參數的時候,call把所需要的函數參數依次列舉出來,而apply需要把函數的參數放在一個數組中。
    </script>
</head>
<body>
</body>
</html>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容