<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的了。當然函數下面定義的就等於是屬於函數作用域範圍裡面的。具體的不多說了。多看資料。