麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

JavaScript 繼承機制的實現(待續)

2024-05-06 14:09:57
字體:
來源:轉載
供稿:網友
1.對象冒充
原理:構造函數使用this關鍵字給所有屬性和方法賦值(即采用類聲明的構造函數方式)。
因為構造函數只是一個函數,所以可使ClassA的構造函數成為ClassB的方法,然后調用它。ClassB就會收到ClassA的構造函數中定義的屬性和方法。
例如:
下面方式定義的ClassA和ClassB:
代碼如下:
function ClassA(sColor){
this.color=sColor;
this.sayColor=function(){
alert(this.color);
};
}

function ClassB(sColor){
}

關鍵字this引用的是構造函數當前創建的對象。
不過在這個方法中國,this指向的是所屬的對象。這個原理把ClassA作為常規函數來建立繼承機制,而不是作為構造行數。
如下使用構造函數ClassB可以實現繼承機制:
代碼如下:
function ClassB(sColor){
this.newMethod=ClassA;
this.newMethod(sColor);
delete this.newMethod;
}

這段代碼中,為(但我覺得這里應該是"把")ClassA賦予了方法newMethod(記住函數名只是指向它的指針)。然后調用該方法,傳遞給它的是ClassB的構造函數的參數sColor。最后一行代碼刪除了對ClassA的引用,這樣以后就不能再調用它。
所有的新屬性和新方法都必須刪除了新方法的代碼行后定義。否則,可能會覆蓋超類的相關屬性和方法:
代碼如下:
function ClassB(sColor,sName){
this.newMethod=classA;
this.newMethod(sColor);
delete this.newMethod;

this.name=sName;
this.sayName=function(){
alert(this.name);
};
}

運行下面的例子:
代碼如下:
var objA=new ClassA("red");
var objB=new ClassB("blue","Nicholas");
objA.sayColor();//outputs "red"
objB.sayColor();//outputs "blue"
objB.sayName(); //outputs "Nicholas"

例如,如果存在兩個類ClassX和ClassY,ClassZ想繼承這兩個類,可以使用下面的代碼:
代碼如下:
function ClassZ(){
this.newMethod=ClassX;
this.newMethod();
delete this.newMethod;

this.newMethod=ClassY;
this.newMethod();
delete this.newMethod;
}

這里存在一個弊端,如果ClassX和ClassY具有同名的屬性或方法,ClassY具有高優先級,因為它從后面繼承。除了這一點小問題外,用對象冒充實現多繼承機制輕而易舉。
由于這種繼承方式的流行,ECMAScript的第三版為Function對象加入了兩個新方法,即call()和apply()。
2.call()方法
call()方法與經典的對象冒充方法最相似的方法。它的第一個參數用作this的對象。其他參數都直接傳遞給函數自身。例如:
代碼如下:
function sayColor(sPrefix,sSuffix){
alert(sPrefix+this.color+sSuffix);
};
var obj=new Object();
obj.color="red";
//outputs "The color is red,a very nice color indeed."
sayColor.call(obj,"The color is ",", a very nice color indeed.")

在這個例子中,函數sayColor()在對象外定義,即使它不屬于任何對象,也可以引用關鍵字this。對象的obj的color屬性等于"red"。調用call()方法時,第一個參數是obj,說明
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 国产成年人在线观看 | 久久91精品国产91久久yfo | 日本xxxx色视频在线观看免费, | 黄色美女网站免费看 | av在线日韩 | 欧美成人一区免费视频 | 日本免费一区二区三区四区 | 亚洲一区二区网址 | 国产一级毛片视频在线! | 国产成人高潮免费观看精品 | 亚洲一区二区中文字幕在线观看 | 夜夜夜精品视频 | 粉嫩蜜桃麻豆免费大片 | 国产一区二区三区高清 | 91麻豆精品国产91久久久无需广告 | 国产精品自拍av | 成人激情久久 | 免费成人 | av日韩在线免费观看 | 中文字幕激情视频 | av成人免费 | 韩国精品久久久 | 狠狠操视频网站 | 国产毛片视频 | 欧美女孩videos | 久久亚洲国产午夜精品理论片 | 性爱免费在线视频 | 高清成人在线 | 青青草在线免费观看 | 一级黄色片武则天 | 久久免费视频精品 | 中国久久久 | 国产亚洲福利 | 欧美一级在线免费 | 欧美精品免费一区二区三区 | 国产九九 | 国产91一区二区三区 | 国产精品久久久久久久久久久久久久久 | 亚洲欧美国产视频 | 国产精品一区二区三区99 | 久久生活片 |