我們創(chuàng)建的每個(gè)函數(shù)都有一個(gè)prototype(原型)屬性,這個(gè)屬性是一個(gè)對象,它的用途是包含可以由特定類型的所有實(shí)例共享的屬性和方法。如果按照字面意思來理解,那么prototype就是通過調(diào)用構(gòu)造函數(shù)而創(chuàng)建的那個(gè)對象的原型對象。使用原型的好處是可以讓所有對象實(shí)例共享它所包含的屬性和方法。南昌網(wǎng)絡(luò)公司開發(fā)人員認(rèn)為,不必在構(gòu)造函數(shù)中定義對象信息,而是可以將這些信息直接添加到原型對象中.如下面的例子所示:
function Person(){
}
Person.prototype.name="Nicholas"!
Person.prototype.age=29;
Person.prototype.job="Software Engineer";
Person.prototype.sayName=function(){
alert(this.name);
};
var personl=new Person();
personl.sayNaIne(); //"Nicholas"
var person2=new Person();
person2.sayName(); //"Nicholas"
alert(personl.sayName==person2.sayName); //true
在此,南昌網(wǎng)站優(yōu)化公司技術(shù)人員將sayName()方法和所有屬性直接添加到了Person的prototype屬性中,構(gòu)造函數(shù)變或了空函數(shù)。即使如此,也仍然可以通過調(diào)用構(gòu)造函數(shù)來創(chuàng)建一個(gè)新對象,而且新對象還會具有相同的屬性和方法。但與構(gòu)造函數(shù)模式不同的是,新對象的這些屬性和方法是由所有實(shí)例共享的。換句話說,personl和person2訪問的都是同一組屬性和同一個(gè)sayName()函數(shù)。要理解原型模式的工作原理,必須先理解ECMAScript中原型的性質(zhì)。
本文僅限內(nèi)部技術(shù)人員學(xué)習(xí)交流,不得作于其他商業(yè)用途.文章出自:南昌網(wǎng)站建設(shè)公司-百恒網(wǎng)絡(luò) http://www.gimmickmag.com 如轉(zhuǎn)載請注明出處!