2013-10-20 216 views
0

好的,下面的函數作爲一個構造函數來創建一個Employee對象(沒有問題)。但是,當我使用這個功能創建3個新員工時,我正在搞亂某個地方。新對象創建問題

我知道我應該設置屬性並打印員工的姓名和電話號碼,但我錯過了某些東西或某些東西在錯誤的地方。

在此先感謝您的幫助。

function Employe() { 
    var = name; 
    var = phone; 
    this.getName = function() { 
     return this.name; 
    } 
    this.setName = function (name, phone) { 
     this.name = name; 
     this.phone = phone; 
    }; 
    } 

    var emp1 = newEmployee; 
    this.Name = 'jo'; 
    this.Phone = ' 555-5551' 
    document.write(Employee.name Employee.phone); 

    var emp2 = newEmployee; 
    this.Name = 'jim'; 
    this.Phone = '555-5552'; 
    document.write(Employee.name Employee.phone); 

    var emp3 = newEmployee; 
    this.Name = 'jon'; 
    this.Phone = '555-5553'; 
    document.write(Employee.name Employee.phone); 
+2

有一個在你的代碼中的許多錯誤,我會建議使用瀏覽器的JavaScript控制檯,首先看它吐出什麼錯誤並修復這些第一。 –

+0

在'new'和'Employee'之間需要有空格。你在構造函數的名字中忘了'e'。我需要繼續嗎?你說什麼?我需要繼續嗎?好吧。你把'var = name'放在你應該放置'this.name ='''的地方。 「新員工」後面忘記了括號。您無法有效地將名稱和電話號碼添加到應該向構造函數提供參數的對象中。你正在做無用的函數'setName'和'getName'。我會說很多,但更多,但我用完字符... – Markasoftware

+0

哦,我忘了,你也正在做'this.name'你應該在哪裏做'emp1.name' – Markasoftware

回答

0

在下面:

> var emp1 = newEmployee; 

左邊的變量將被分配評估在右邊的表達式的結果。沒有標識符newEmployee,所以你會得到一個錯誤。你大概意思寫的是:

var emp1 = new Employee(); 

將調用構造函數,它會返回一個新的實例,參考到將被分配給EMP1

然後,你必須:

> this.Name = 'jo'; 

進入執行上下文時這個的值設置。對於全局代碼,它始終引用全局對象(在瀏覽器中相當於窗口)。因此,上面的行創建了全局對象的名稱屬性並分配值'jo';

你想要的大概是:

emp1.setName('jo','555-5551'); 

該方法的名稱因爲它設置的名稱和電話號碼,似乎不妥。

> document.write(Employee.name Employee.phone); 

既然你添加的屬性實例(EMP1),可能這就是你想要閱讀的特性:

document.write(emp1.name + ' ' + emp1.phone); 

或使用的getName方法:

document.write(emp1.getName() + ' ' + emp1.phone); 

等。

0

你的代碼示例有很多錯誤。構造函數拼寫錯誤。員工實例應創建爲:

var emp1 = new Employee();

實例屬性應被設置,如:

emp1.setName( '約翰');

您還將兩個setter組合成一個,這很混亂。

要訪問實例屬性,您應該使用:

emp1.getName();

不:

Employee.Name

0

是的,你有很多的錯誤,我認爲這基本上是你想達到什麼樣的。

function Employee(){ 
this.name; 
this.phone; 
this.getName = function(){ 
return this.name; 
}; 
this.setName = function(name, phone){ 
this.name = name; 
this.phone = phone; 
}; 
} 

function employ(){ 

    var emp1 = new Employee(); 
    emp1.name = 'jo'; 
    emp1.phone = ' 555-5551' ; 

    alert(emp1.getName()); 

}

http://jsfiddle.net/umNTs/