2010-09-10 25 views
0

精通javascript程序員的一個小問題:有兩種方法可以在javascript中聲明一個函數。在JavaScript函數中混合使用異議表示法和常規樣式?

答:JavaScript的對象符號

function MyLittleHouseA(name) { 
    this.age = 88, 
    this.name = name, 
    this.getName = function() 
    { 
     return this.name; 
    } 
} 

B:嗯,正常:

function MyLittleHouseB(name) { 
    this.age = 88; 
    this.name = name; 
    //do some more proceduaral stuff upon 'construction' 
    this.age = this.age + 20; 
    this.getName = function() 
    { 
     return this.name; 
    } 
} 

我找到一個更優雅(並有多個對象我想變成可配置的選項......),但可能想在創建實例時做更多的事情,因此我需要如B所示。

這些可以混合使用嗎?

¡Thanx!

+1

請不要刪除這樣的問題。要麼完全刪除它(在你的問題下應該有一個刪除按鈕),或者把它留下,即使你不再需要這個答案。人們已經回答了這個問題,這些信息留給其他人看,但是現在由於問題文本已經改變,答案沒有意義。因此,決定是否要離開它,或者完全刪除它。 – 2010-09-10 11:06:06

回答

3

您的第一個選項不使用對象表示法。如果你想使用對象符號,你可以寫這樣的事情:

function MyLittleHouse(name) { 
    var age = 88; 
    age += 20; 
    return { 
     getName: function() { 
      return name; 
     } 
    } 
} 

這有沒有使用this,這意味着你避免與this結合的任何問題的優勢。它還隱藏了agename,這可能是也可能不是所希望的 - 因爲它代表着無法訪問,而name是不可變的,因爲它只能通過getName讀取。如果您想將age作爲正常字段公開:

function MyLittleHouse(name) { 
    var age = 88; 
    age += 20; 
    return { 
     age: age, 
     getName: function() { 
      return name; 
     } 
    } 
} 
+0

邁克爾,很好的回答!好得多,然後我非常錯誤的問題!事實上,我正在處理所有這些「這個」麻煩。這將幫助我大好時間......另外我喜歡「配置對象」冒號樣式... – 2010-09-10 13:45:33

相關問題