javascript - JS中物件的作用域?或是物件的屬性的一些疑問?

WBOY
發布: 2016-08-23 09:17:41
原創
1049 人瀏覽過

<code>var a=3;
var object = { 
    a:2, 
    run: function() {
         alert(a);         //a=3;
         } 
    }; 
object.run(); </code>
登入後複製
登入後複製

a為什麼不是2?
在物件中的a:2是什麼意思?

回覆內容:

<code>var a=3;
var object = { 
    a:2, 
    run: function() {
         alert(a);         //a=3;
         } 
    }; 
object.run(); </code>
登入後複製
登入後複製

a為什麼不是2?
在物件中的a:2是什麼意思?

<code>run: function() {
     this.a=1;
     } 
}; </code>
登入後複製

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

<code class="javascript">var a=3;
var object = { 
    a:2, 
    run: function() {
         alert(this.a);//2
         alert(a);//3 
        } 
    }; 
object.run(); </code>
登入後複製

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板