2013-06-28 167 views
0

如何正確設置javascript對象的屬性?我的console.log()不應該返回undefined。用jQuery設置javascript對象的屬性。

首先我聲明一個類:

function SignUpForm(myFormElement) { 
    var eForm, email, password; 

    this.eForm = myFormElement; 
} 

然後在頁面加載,我實例化類:

$(document).ready(function(){ 
    myFormElement = $('form'); 
    myForm = new SignUpForm(myFormElement); 
    console.log(myForm.eForm); // Returns undefined :(
}); 
+3

你不需要'var eForm,email,password;'那裏。這不是你如何在'this'上聲明變量。 – meagar

+1

'var eForm'和'this.eForm'是兩個完全不同的東西。 – crush

+2

我無法重現此行爲:http://jsfiddle.net/eeC94/ –

回答

0
function SignUpForm(myFormElement) { 
    this.eForm = myFormElement; 
} 

您可以安全地移除您聲明的範圍變量,因爲它們不會執行任何操作。

+0

你不需要'return this;'。 – marteljn

+0

絕對正確。錯過了新的關鍵字。 – bluetoft

0

我看沒有錯當前。我不使用日誌很多,但不知道是否可以「記錄」一個對象,或者它是否必須是類型字符串。除此之外,對象設置正確。 myForm是一個對象,eForm是對象的一個​​屬性,它的值是選擇器「FORM」的jquery對象。

1

你可能想要這樣的東西?!

HTML:

<form> 
    <input name="email" /> 
    <input name="password" /> 
</form> 

的Javascript:

在這裏定義SignUpForm類和電子表格你序列form

function SignUpForm(myFormElement) { 
    this.eForm = myFormElement.serialize(); 
} 

$(document).ready(function(){ 
    myFormElement = $('form'); 
    myForm = new SignUpForm(myFormElement); 
    console.log(myForm.eForm); 
}); 

jsFiddle

編輯:如果eForm存儲元素,那麼你的代碼是好的......但console.log(myForm.eForm);犯規多大意義,併爲其餘的可以序列化form元素console.log(myForm.eForm.serialize());

+0

爲什麼要序列化表單? –

+0

@DonnyP - 什麼樣的eForm?它看起來像調試值或什麼的 – Shaddow