javascript工廠方式定義對象
每一個函數對象都有一個length屬性,表示該函數期望接收的參數個數。
<html>
<head>
<script type="text/javascript">
var add =function(num1,num2,num3){
alert(num1+num2+num3);
}
alert(add.length);
</script>
</head>
<body>
</body>
</html>
關于js面向對象的創(chuàng)建方式,
目標:
構建一個order對象.
包含三個屬性:日期,金額,提交人
包含一個方法:顯示字符串:”XX在XXXX-XX-XX 提交了額度為:XXXX元的訂單"
一 工廠方式
<script type=text/javascript>
/*
工廠方式:通過使用方法返回對象,使用時不需要通過new生成新對象.
*/
function createOrder()//也可以構建帶參數的工廠方法,根據傳入的參數初始化對象數據.
{
var order = new Object();
order.Date = "1990-1-1";
order.Price = "3200";
order.Name = "Vince Keny";
order.Show = function()//將show方法放在工廠中,則分別為每個實例創(chuàng)造一個Show方法.浪費資源是此模式的弊端.
{
alert(this.Name + " 在 " + this.Date + " 提交了額度為 " + this.Price + " 元的訂單.")
}
return order;
}
//使用工廠模式返回對象:
var order = createOrder();
//也可以這樣使用,把工廠模式改造成"偽構造函數",因為在工廠中使用了new,所以創(chuàng)建對象時的new運算符將被忽律.
var order2 = new createOrder();
order.Show();
order2.Show();
</script>
二 構造函數方式
/*
構造函數方式,方法的聲明與工廠方式一樣,也存在同同樣的問題,同樣可以提取出來.不同點是聲明屬性用this
并且需要使用new運算符生成實例.
*/
function Order()
{
this.Date = "1990-1-1";
this.Price = "3200";
this.Name = "Vince Keny";
this.Show = function()
{
alert(this.Name + " 在 " + this.Date + " 提交了額度為 " + this.Price + " 元的訂單.")
}
}
var order = new Order();
order.Show();
三 原型方式
/*
原型方式:使用prototype
*/
function Order()
{}
Order.prototype.Date = "1990-1-1";
Order.prototype.Price = "3200";
Order.prototype.Name = "Vince Keny";
Order.prototype.Show = function()
{
alert(this.Name + " 在 " + this.Date + " 提交了額度為 " + this.Price + " 元的訂單.")
}
var order = new Order();
order.Show();
四 混合 構造函數/原型 方式
/*
混合構造函數/原型 方式 : 使用構造函數方式初始化屬性字段,使用原型方式構造方法.
*/
function Order()
{
this.Date = "1990-1-1";
this.Price = "3200";
this.Name = "Vince Keny";
}
Order.prototype.Show = function().
{
alert(this.Name + " 在 " + this.Date + " 提交了額度為 " + this.Price + " 元的訂單.")
}
var order = new Order();
order.Show();
五 動態(tài)混合方式
/*
動態(tài)混合方式 : 和混合方式不同點在于聲明方法的位置.將方法生命放到了構造函數內部,更符合面向對象.
*/
function Order()
{
this.Date = "1990-1-1";
this.Price = "3200";
this.Name = "Vince Keny";
if(typeof Order._initialized == "undefined")
{
Order.prototype.Show = function().
{
alert(this.Name + " 在 " + this.Date + " 提交了額度為 " + this.Price + " 元的訂單.")
};
Order._initialized = true;
}
}
function Car(sColor,iDoors){
var oTempCar = new Object;
oTempCar.color = sColor;
oTempCar.doors = iDooes;
oTempCar.showColor = function (){
alert(this.color)
};
return oTempCar;
}
var oCar1 = new Car("red",4);
var oCar2 = new Car("blue",3);
oCar1.showColor(); //outputs "red"
oCar2.showColor(); //outputs "blue"
- Javascript使用function創(chuàng)建類的兩種方法(推薦)
- Javascript 創(chuàng)建類并動態(tài)添加屬性及方法的簡單實現(xiàn)
- JS創(chuàng)建類和對象的兩種不同方式
- JavaScript中創(chuàng)建類/對象的幾種方法總結
- JavaScript創(chuàng)建類/對象的幾種方式概述及實例
- javascript最常用與實用的創(chuàng)建類的代碼
- 利用MS AJAX注冊Javascript命名空間并創(chuàng)建類
- 討論javascript(一)工廠方式 js面象對象的定義方法
- JavaScript中使用構造器創(chuàng)建對象無需new的情況說明
- JavaScript設計模式之工廠模式和構造器模式
- javascript 混合的構造函數和原型方式,動態(tài)原型方式
- JS常見創(chuàng)建類的方法小結【工廠方式,構造器方式,原型方式,聯(lián)合方式等】
相關文章
初學JS的的小例子 javascript replace高亮替換
初學JS的的小例子 javascript replace高亮替換...2007-12-12javaScript中兩個等于號和三個等于號之間的區(qū)別介紹
這篇文章主要介紹了javaScript中兩個等于號和三個等于號之間的區(qū)別,還不知道的朋友可以學習下2014-06-06Adapter適配器模式在JavaScript設計模式編程中的運用分析
適配器模式的作用是解決兩個軟件實體間的接口不兼容的問題,在JavaScript尤其是AJAX方面比較常用,接下來看一下對Adapter適配器模式在JavaScript設計模式編程中的運用分析2016-05-05JavaScript正則表達式之multiline屬性的應用
這篇文章主要介紹了JavaScript正則表達式之multiline屬性的應用,是JS學習進階中的重要知識,需要的朋友可以參考下2015-06-06