面向對象的語言必須具備四個基本特征:
1.封裝能力(即允許将基本資料類型的變量或函數放到一個類裡,形成類的成員或方法)
2.聚合能力(即允許類裡面再包含類,這樣可以應付足夠複雜的設計)
3.支援繼承(父類可以派生出子類,子類擁有父母的屬性或方法)
4.支援多态(允許同樣的方法名,根據方法簽名[即函數的參數]不同,有各自獨立的處理方法)
這四個基本屬性,javascript都可以支援,是以javascript确實是一種弱類型的面向對象的語言,這裡給出一個簡單的類繼承的代碼
<script type="text/javascript">
//父類ClassA
function ClassA(sColor)
{
this.color = sColor;
this.sayColor = function ()
document.write("Color:" + this.color + "<br/>");
};
}
//子類ClassB,繼承自ClassA
function ClassB(sColor,sName)
{
ClassA.call(this,sColor);//利用call函數,将ClassA的所有方法都賦給ClassB,即實作了繼承
this.name = sName;
this.sayName = function()
document.write("Name:" + this.name + "<br/>");
}
var oClassA = new ClassA("Red");
oClassA.sayColor();
var oClassB = new ClassB("Blue","Jimmy.Yang");
oClassB.sayColor();//這裡sayColor方法是從ClassA繼承來的
oClassB.sayName();//這是ClassB中的新方法
/**//*
call函數的示範示例
function sayColor(sPrefix, sSuffix) {
alert(sPrefix + this.color + sSuffix);
};
var obj = new Object();
sayColor.call(obj, "The color is ", ", a very nice color indeed. ");
*/
</script>