建立高階物件建構有兩種方式:使用「this」關鍵字建構、使用原型prototype建構。如:
//使用this关键字定义构造的上下文属性 function Girl() { this.name = "big pig"; this.age = 20; this.standing; this.bust; this.waist; this.hip; } //使用prototype function Girl(){} Girl.prototype.name = "big pig"; Girl.prototype.age = 20; Girl.prototype.standing; Girl.prototype.bust; Girl.prototype.waist; Girl.prototype.hip; alert(new Girl().name);
上例中的兩個定義本質上沒有差別,都是定義「Girl」物件的屬性資訊。 「this」與「prototype」的差異主要在於屬性存取的順序。如:
function Test() { this.text = function() { alert("defined by this"); } } Test.prototype.test = function() { alert("defined by prototype"); } var _o = new Test(); _o.test();//输出“defined by this”
當存取物件的屬性或方法是,將依照搜尋原型鏈prototype chain的規則進行。首先尋找自身的靜態屬性、方法,繼而找出建構上下文的可存取屬性、方法,最後找出建構的原型鏈。
「this」與「prototype」定義的另一個不同點是屬性的佔用空間不同。使用「this」關鍵字,範例初始化時為每個實例開闢建構方法所包含的所有屬性、方法所需的空間,而使用「prototype」定義,由於「prototype」實際上是指向父級的一種引用,只是個資料的副本,因此在初始化及儲存上都比「this」節約資源。
以上是javascript自訂物件建構的方式實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!