2012-07-15 130 views
1

我是新來的前端開發,現在我閱讀了大量的JS代碼由其他在我公司書面和發現他們會用這個語法來存儲參數:使用this.argu存儲參數是一種好的做法?

function func1(argu1,argu2){ 
    this.argu1 = argu1; 
    this.argu2 = argu2; 
    // other code run here.... 
} 

對我來說,我通常跳過此,直接在我的代碼使用參數或得到一個變量爲N,就像這樣:

function func2(argu1,argu2){ 
    alert(argu1); 
    alert(argu2); 
    var arguOne = argu1,arguSec = argu2; 

    // other code run here... 
} 

所以我要要問,爲什麼使用這個語法來存儲的參數呢? 這是一個很好的做法嗎?爲什麼? 我有沒有想過我應該知道的一些概念?

看到fiddle,由我的同事誰已經不再是前安德書面....

+0

你爲什麼要「存儲參數」? – Pointy 2012-07-15 13:46:30

+2

函數名是否有大寫字母?如果這是一個構造函數,那麼稱它爲func1而不是'Func1'是不好的做法。 – Esailija 2012-07-15 13:46:38

+0

@點我不知道,這正是我的同事寫的,我問過他,他說這很方便獲得參數......因爲我不是JS Pro,所以我在這裏問...... – Lien 2012-07-15 13:55:10

回答

2

在你的第一個例子,FUNC1可以用來創建對象。它實際上是一個類定義(構造函數)。它可以使用如下:

function func1(argu1,argu2) 
{ 
    this.argu1 = argu1; 
    this.argu2 = argu2; 
} 

var instance = new func1('a', 'b'); 
alert(instance.argu1); 
alert(instance.argu2); 
+0

謝謝!看到我的合作者寫的[fiddle](http://jsfiddle.net/strangeline/T29vd/),他已經不再是一個前鋒了,我不認爲這將是一個類定義機會...... – Lien 2012-07-15 14:03:36

+0

@strangeline確實不是,他要麼故意或意外地創建全局變量。而全球國家並不是一個好的做法。 – Esailija 2012-07-15 14:06:31

+0

@Esailija非常感謝!我懷疑這是相當長的一段時間,因爲他是我的上級之前......並且非常肯定他的理論「這樣便於存儲參數」.... – Lien 2012-07-15 14:12:21

1

Lord Lord:不是定義函數,而是在最後調用它,嘗試使用閉包。只要保持功能定義是,但把它放在括號:

(function new_slider (arguments) 
{ 
    //your code here 
})('#new_slider',1500,150,10); 

這樣,函數聲明,並在同一時間調用,主要new_slider函數中定義的所有功能,將有機會獲得的參數。絕對沒有理由使用this.argu1來存儲這些值。如果有的話,它會創建全局變量,這被認爲是不好的做法。

請谷歌關閉在JavaScript中,他們是非常強大的

相關問題