javascript this可以綁定到:全局對象,自己定義的對象,用構造函數生成的對象,通過call或者apply更改綁定的對象
1.全局對象
1
2
3
4
5
<code>function</code> <code>globaltest(name){</code>
<code> </code><code>this</code><code>.name=name;</code>
<code> </code><code>}</code>
<code> </code><code>globaltest(</code><code>'tree'</code><code>);</code>
<code> </code><code>console.log(name);</code><code>//tree,預設生成了全局對象name,這種寫法一般是不允許的</code>
2.自己定義的對象


3.用構造函數生成的對象
構造函數約定第一個字母要大寫,隻有用new調用的時候才算構造函數,否則跟普通函數沒有什麼不同,用new調用構造函數,this會綁定到生成的對象。


4.指定的對象,通過call或者apply綁定
call函數和apply函數的差別是參數不一樣,兩個方法都可以改變this綁定的對象,如下
call(obj,param1,param2……);
apply(obj,[]/*params[]參數數組*/);


最後:
javascript有一個設計缺陷,使得的this綁定混亂


解決方法約定用that代替this


本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
轉載:http://www.cnblogs.com/greenteaone/p/4193985.html