我正在運行三段代碼。第一個工作,而第二個和第三個不起作用。我不知道我明白爲什麼第二和第三不起作用。對象內部對象的範圍在對象內的函數內
user2 = {
handle :"mytext",
alertName: function(){
alert(this.handle);}
};
user2.handle; //"mytext"
user2.alertName() // alerts "mytext"
在這裏,我明白句柄分配給user2對象,並且是user2對象上的鍵。因此,當我調用user2.alertName()時,this.handle引用user2.handle,因此打印出正確的值。
但是,爲什麼不將下面的代碼工作的兩個版本:
user2 = {
handle :"mytext",
alertName: function(){
alert(handle);}
};
user2.handle; //"mytext"
user2.alertName() // gives error that handle is not defined in the console
和
user2 = {
handle :"mytext",
alertName: function(handle){
alert(handle);}
};
user2.handle; //"mytext"
user2.alertName() //gives undefined in the alert popup
據我瞭解的範圍,處理其在user2的對象被定義應該可用作爲user2的子範圍的函數。 我在這裏錯過了一些基本的東西。如果這看起來像一個noob問題,但我認爲我知道了,並總是不斷回來。我無法在任何地方得到明確的答案,因爲當我查找文檔時爲什麼第二個或第三個沒有意義。
感謝,並在這裏,我向一個重要的點。使用對象名稱和'this'是不一樣的。我查了下面的答案,以瞭解不同之處http://stackoverflow.com/questions/25226693/whats-the-difference-between-using-this-and-the-object-name-for-reference-insi。希望它也能幫助其他人 –