比方說,我有這樣的構造:爲什麼像這樣向JavaScript引用類型添加方法不起作用?
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
我想方法添加到它。
爲什麼這樣的:
Person.prototype.getFullName = function() {
return this.firstName + " " + this.lastName;
};
就是要做到這一點,而不是這樣的:我不知道爲什麼我收到downvoted
Person.getFullName = function() {
return this.firstName + " " + this.lastName;
};
,所以如果downvoters會增加我將不勝感激評論與downvote的實際原因。這將幫助我更好地說出我未來的問題。
我在某種程度上理解了原型背後的繼承概念。至少在初級水平的教程,文章和書籍中顯示的範圍內。
讓我感到困惑的可能是我在Java和類中的背景,這在JavaScript中不是一回事。
我想象,這個定義一個類Person
:
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
當我使用類創建一個對象:
var myObject = new Person("John", "Doe");
我仍然可以添加一些新的屬性或方法到該對象:
myObject.getFullName = function() {
return this.firstName + " " + this.lastName;
};
現在只有myObject
會有這個新的方法getFullName
,很清楚。
var myObject2 = new Person("Daniel", "Cook");
對於myObject2
沒有getFullName
方法,依然清晰。
一旦我添加了一個方法,我的「類」的原型Person
將通過與「類」創建的所有對象繼承:
Person.prototype.getFullName = function() {
return this.firstName + " " + this.lastName;
};
現在甚至myObject2
,有getFullName
方法。明確。
好的。我認爲我在腦海中解決了這個問題的根源。擴展這篇文章幫助了我。
函數Person
也是一個對象,對不對?
我想看看一些討論它的原型繼承系統的JS教程。 –
@DaveNewton我做過了,但是這還不清楚,這就是爲什麼我問。在Java中有一些經驗我想象添加一個方法到「類」Person.getfullName會很好。在任何示例中,我都沒有看到它,並且它不會拋出任何錯誤,因此它會執行某些操作。問題是什麼,它是否有用。 –
我認爲閱讀我的回答這個問題將幫助你(這不是一個重複,只是相關)http://stackoverflow.com/questions/31630409/what-is-the-point-of-javascript-constructor/31630682#31630682 – LukeP