2016-12-29 105 views
0

我想檢查一下我的想法是否正確?使用函數構造函數原型添加新函數

代碼:

function Person(firstname, lastname) { 
      this.firstname = firstname; 
      this.lastname = lastname; 
     } 

     Person.prototype.getFullName = function() { 
      return this.firstname + ' ' + this.lastname; 
     } 

     var john = new Person('Melo','Tang'); 

我叫下面的圖片 「功能構造」 的代碼。

function Person(firstname, lastname) { 
       this.firstname = firstname; 
       this.lastname = lastname; 
      } 

當程序運行到這一行

var john = new Person('Melo','Tang'); 

JS會用原型鏈添加getFullName功能的「功能構造」對象和新的像下面的圖片一個空的對象是嗎? enter image description here

+0

「原型鏈」標籤應位於紅色箭頭上。 –

+0

我忘了謝謝,但除此之外有任何錯誤? –

回答

2

我真的不明白你的圖表或箭頭或他們的顏色應該代表什麼。

當程序運行到這一行

var john = new Person('Melo','Tang');

這裏會發生什麼事正是一個新的對象通過Person構造結構,與Person.prototype爲原型。除了被用作新對象的原型之外,Person.prototype沒有被檢查或諮詢,目前對它的方法也沒有做任何事情。僅在查找屬性和方法(如調用john.getFullName()時)纔會查閱原型。

爲了清楚起見,我會避免使用術語「功能構造函數對象」。把它稱爲「構造函數(function)」。

+0

torazaburo謝謝。據我所知,Prototype是一個對象的屬性,Proto是一個對象。我稱之爲「函數構造函數對象」,因爲我想強調函數構造函數是JS中的一個對象。我想問一個問題,「Person.prototype」是函數構造函數的一個屬性?如果是,getFullName函數被添加到Person.prototype或proto Obj? –