天天看點

JavaScript-this了解

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.自己定義的對象    

JavaScript-this了解
JavaScript-this了解

     3.用構造函數生成的對象

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

JavaScript-this了解
JavaScript-this了解

     4.指定的對象,通過call或者apply綁定

 call函數和apply函數的差別是參數不一樣,兩個方法都可以改變this綁定的對象,如下

call(obj,param1,param2……);

apply(obj,[]/*params[]參數數組*/);

JavaScript-this了解
JavaScript-this了解

最後:

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

JavaScript-this了解
JavaScript-this了解

解決方法約定用that代替this

JavaScript-this了解
JavaScript-this了解

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

轉載:http://www.cnblogs.com/greenteaone/p/4193985.html

繼續閱讀