本文實(shí)例講述了JavaScript設(shè)計(jì)模式之構(gòu)造器模式(生成器模式)定義與用法。分享給大家供大家參考,具體如下:
工廠模式雖然解決了重復(fù)實(shí)例化的問題,但無法識別對象類型。
可以采用構(gòu)造函數(shù)(構(gòu)造方法)可用來創(chuàng)建特定的對象,可以解決工廠模式無法識別對象實(shí)例的問題。也就是說,使用構(gòu)造函數(shù)的方法 ,即解決了重復(fù)實(shí)例化的問題 ,又解決了對象識別的問題。
構(gòu)造器模式與工廠模式的不同之處在于:
	① 構(gòu)造函數(shù)方法沒有顯示的創(chuàng)建對象 (new Object());
	② 直接將屬性和方法賦值給 this 對象;
	③ 沒有 return 語句。
構(gòu)造函數(shù)方法的規(guī)范:
① 函數(shù)名和實(shí)例化構(gòu)造名相同且大寫 (非強(qiáng)制,但有助于區(qū)分構(gòu)造函數(shù)和普通函數(shù));
	② 通過構(gòu)造函數(shù)創(chuàng)建對象,必須使用new運(yùn)算符。
function Person(name, age) {  this.name = name;    this.age = age;  this.showName = function() {      alert(this.name);    };}var person1 = new Person("Alice", 23);var person2 = new Person("Bruce", 22);構(gòu)造器模式的問題:每個(gè)方法都要在每個(gè)實(shí)例上重新創(chuàng)建一遍。
原因:JavaScript中的函數(shù)是對象,每定義一個(gè)函數(shù),就是實(shí)例化了一個(gè)Funtion對象,因此,使用構(gòu)造函數(shù)創(chuàng)建的每個(gè)實(shí)例都有一個(gè)同名的方法,但這些方法不是同一個(gè)Function的實(shí)例,因?yàn)椴煌瑢?shí)例上的同名函數(shù)是不相等的。
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答