寄生建構函數模式
通常,在前述的幾種模式都不適用的情況下,可以使用寄生(parasitic)建構函數模式。這種模式的基本想法是創建一個函數,該函數的作用只是封裝創建物件的程式碼,然後再返回新創建的物件;但從表面上看,這個函數又很像是典型的建構子。下面是一個例子。
function Person(name, age, job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); }; return o; } var friend = new Person("Nicholas", 29, "Software Engineer"); friend.sayName(); //"Nicholas"
在這個例子中,Person 函數創建了一個新對象,並以相應的屬性和方法初始化該對象,然後又返回了這個對象。除了使用new 運算元並把使用的包裝函數叫做建構函式之外,這個模式跟工廠模式其實是一模一樣的。建構函數在不傳回值的情況下,預設會傳回新物件實例。
穩健建構函數模式
所謂穩妥對象,指的是沒有公共屬性,其方法也不引用this 的對象。穩妥物件最適合在一些安全的環境中(這些環境中會禁止使用this 和new),或是在防止資料被其他應用程式(如Mashup程式)改動時使用。穩妥建構函數遵循與寄生建構函數類似的模式,但有兩點不同:一是新建立物件的實例方法不引用this;二是不使用new 操作符呼叫建構子。依照穩妥建構函數的要求,可以將前面的Person 建構子重寫如下。
function Person(name, age, job){ //创建要返回的对象 var o = new Object(); //可以在这里定义私有变量和函数 //添加方法 o.sayName = function(){ alert(name); }; //返回对象 return o; }
以上是javascript寄生建構函數模式與穩健建構函數模式實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!