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