js this 指針的幾種狀況

牽扯到js函數調用,this指針就不可避免的要涉及,那麼this指針到底指向誰,請牢記:「this永遠指向當前正在執行的函數對象」,js函數有四種狀況,分別是:javascript

  1. 當函數是函數聲明或者函數表達式時
  2. 當函數是對象的方法時
  3. 當函數是構造函數時
  4. 當函數是經過函數方法調用時

NO1:html

<script type="text/javascript">
            function test1 (a,b) {
                console.log(this);//this=>window
                return document.write(a*b+"<br />");
            }
            test1(2,5);//返回10
            
            var test2 = function (a,b) {
                console.log(this);//this=>window
                return document.write(a*b);
            }
            test2(2,5)//返回10
        </script>

解釋說明:針對這種狀況,函數自己就是全局對象,而在html中全局對象就是html自己,而在瀏覽器中頁面對象就是瀏覽器窗口對象(window),因此以上函數會自動成爲window對象下的函數java

NO2:瀏覽器

var objFun = {
                a:2,
                b:8,
                test3:function (a,b) {
                    console.log(this);//this=>object自己
                    return document.write(a*b+"<br />");
                    //return document.write(this.a*this.b+"<br />");
                }
            }
            objFun.test3(2,5);//返回10

解釋說明:test3是一個函數(也是objFun的一個方法),函數自己歸屬於對象(這是由於函數的typeof爲function,而function自己就是對象),而objFun是函數的全部者,因此this指向objFun自己函數

NO3:this

function test4 (a,b) {
                this.first = a;
                this.second = b;
                console.log(this);//this=>test4自己
            }
            var x = new test4(2,5);

解釋說明:這裏使用了new關鍵字,而new關鍵字的做用就是從新創建一個對象,因此this指向test4自己,spa

你們也能夠試着在控制檯打印出他們的typeof結果看一下。指針

轉載請註明出處!=>http://www.cnblogs.com/zxn-9588/p/8916152.html code

相關文章
相關標籤/搜索