javascript - JS中對象的範圍?或者是對象的屬性的一些疑問?

來源:互聯網
上載者:User
var a=3;var object = {     a:2,     run: function() {         alert(a);         //a=3;         }     }; object.run(); 

a為什麼不是2?
在對象中的a:2是什麼意思?

回複內容:

var a=3;var object = {     a:2,     run: function() {         alert(a);         //a=3;         }     }; object.run(); 

a為什麼不是2?
在對象中的a:2是什麼意思?

run: function() {     this.a=1;     } }; 

你不顯示指定,還是全域範圍下的變數。

var a=3;var object = {     a:2,     run: function() {         alert(this.a);//2         alert(a);//3         }     }; object.run(); 

範圍的問題了,你直接彈出一個a,這個時候程式就會找a,首先會在當前範圍裡面找,沒有,就會去外面找,然後就找到了var a,這個a其實就相當於 window.a,其實你這裡直接彈出一個a,就相當於是找了個 window.a全域範圍下的a ,而為什麼找的不是object.a 這個a呢,前面說了,你找的相當於是 window.a 而不是 obejct.a兩者的範圍環境不一。js作為一個物件導向的程式設計語言,所有的東西又要有個存在的歸屬,那個東西屬於哪個,這個要搞明白,如果你不弄的話,就相當於預設了它是全域下面的,一般js所有的東東都是定義在window下面的。所以你要不先定義好是哪個a,那a就相當於直接是window的了。當然函數下面定義的就相當於是屬於函數範圍範圍裡裡面的。具體的不多說了。多看資料。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.