javascript 面向?qū)ο罄^承
更新時(shí)間:2009年11月26日 00:45:18 作者:
javascript 面向?qū)ο罄^承,需要的朋友可以參考下。
在prototype框架中的類繼承實(shí)現(xiàn)機(jī)制
//為Object類添加靜態(tài)方法:extend
Object.extend = function(destination, source) {
for(property in source) {
destination[property] = source[property];
}
return destination;
}
//通過(guò)Object類為每個(gè)對(duì)象添加方法extend
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}
Object.extend方法很容易理解,它是Object類的一個(gè)靜態(tài)方法,用于將參數(shù)中source的所有屬性都賦值到destination對(duì)象中,并返回destination的引用。下面解釋一下Object.prototype.extend的實(shí)現(xiàn),因?yàn)镺bject是所有對(duì)象的基類,所以這里是為所有的對(duì)象都添加一個(gè)extend方法,函數(shù)體中的語(yǔ)句如下:
Object.extend.apply(this,[this,object]);
這一句是將Object類的靜態(tài)方法作為對(duì)象的方法運(yùn)行,第一個(gè)參數(shù)this是指向?qū)ο髮?shí)例自身;第二個(gè)參數(shù)是一個(gè)數(shù)組,包括兩個(gè)元素:對(duì)象本身和傳進(jìn)來(lái)的對(duì)象參數(shù)object。函數(shù)功能是將參數(shù)對(duì)象object的所有屬性和方法賦值給調(diào)用該方法的對(duì)象自身,并返回自身的引用。有了這個(gè)方法,下面看類繼承的實(shí)現(xiàn):
<script language="JavaScript" type="text/javascript">
<!--
//定義extend方法
Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property];
}
return destination;
}
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}
//定義class1
function class1(){
//構(gòu)造函數(shù)
}
//定義類class1的成員
class1.prototype={
method:function(){
alert("class1");
},
method2:function(){
alert("method2");
}
}
//定義class2
function class2(){
//構(gòu)造函數(shù)
}
//讓class2繼承于class1并定義新成員
class2.prototype=(new class1()).extend({
method:function(){
alert("class2");
}
});
//創(chuàng)建兩個(gè)實(shí)例
var obj1=new class1();
var obj2=new class2();
//試驗(yàn)obj1和obj2的方法
obj1.method();
obj2.method();
obj1.method2();
obj2.method2();
//-->
</script>
從運(yùn)行結(jié)果可以看出,繼承被正確的實(shí)現(xiàn)了,而且派生類的額外成員也可以以列表的形式加以定義.
復(fù)制代碼 代碼如下:
//為Object類添加靜態(tài)方法:extend
Object.extend = function(destination, source) {
for(property in source) {
destination[property] = source[property];
}
return destination;
}
//通過(guò)Object類為每個(gè)對(duì)象添加方法extend
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}
Object.extend方法很容易理解,它是Object類的一個(gè)靜態(tài)方法,用于將參數(shù)中source的所有屬性都賦值到destination對(duì)象中,并返回destination的引用。下面解釋一下Object.prototype.extend的實(shí)現(xiàn),因?yàn)镺bject是所有對(duì)象的基類,所以這里是為所有的對(duì)象都添加一個(gè)extend方法,函數(shù)體中的語(yǔ)句如下:
Object.extend.apply(this,[this,object]);
這一句是將Object類的靜態(tài)方法作為對(duì)象的方法運(yùn)行,第一個(gè)參數(shù)this是指向?qū)ο髮?shí)例自身;第二個(gè)參數(shù)是一個(gè)數(shù)組,包括兩個(gè)元素:對(duì)象本身和傳進(jìn)來(lái)的對(duì)象參數(shù)object。函數(shù)功能是將參數(shù)對(duì)象object的所有屬性和方法賦值給調(diào)用該方法的對(duì)象自身,并返回自身的引用。有了這個(gè)方法,下面看類繼承的實(shí)現(xiàn):
復(fù)制代碼 代碼如下:
<script language="JavaScript" type="text/javascript">
<!--
//定義extend方法
Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property];
}
return destination;
}
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}
//定義class1
function class1(){
//構(gòu)造函數(shù)
}
//定義類class1的成員
class1.prototype={
method:function(){
alert("class1");
},
method2:function(){
alert("method2");
}
}
//定義class2
function class2(){
//構(gòu)造函數(shù)
}
//讓class2繼承于class1并定義新成員
class2.prototype=(new class1()).extend({
method:function(){
alert("class2");
}
});
//創(chuàng)建兩個(gè)實(shí)例
var obj1=new class1();
var obj2=new class2();
//試驗(yàn)obj1和obj2的方法
obj1.method();
obj2.method();
obj1.method2();
obj2.method2();
//-->
</script>
從運(yùn)行結(jié)果可以看出,繼承被正確的實(shí)現(xiàn)了,而且派生類的額外成員也可以以列表的形式加以定義.
相關(guān)文章
頁(yè)面調(diào)用單個(gè)swf文件,嵌套出多個(gè)方法。
頁(yè)面調(diào)用單個(gè)swf 文件,嵌套出多個(gè)方法,需要的朋友可以參考下。2011-11-11淺析JavaScript中l(wèi)et與const命令的區(qū)別
這篇文章主要為大家詳細(xì)介紹了JavaScript中l(wèi)et命令與const命令的用法及區(qū)別,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考下2023-09-09JavaScript如何實(shí)現(xiàn)在文本框(密碼框)輸入提示語(yǔ)
為了更好的達(dá)到用戶體驗(yàn)度,我們?cè)诘卿洷韱螘r(shí)會(huì)有一些提示語(yǔ)言,比如說(shuō):“請(qǐng)輸入用戶名”和“請(qǐng)輸入密碼”等語(yǔ)言,下面小編通過(guò)本篇文章給大家分享JavaScript如何實(shí)現(xiàn)在密碼框中出現(xiàn)提示語(yǔ),對(duì)js密碼框提示語(yǔ)相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-12-12企業(yè)微信掃碼登錄網(wǎng)頁(yè)功能實(shí)現(xiàn)代碼
這篇文章主要介紹了企業(yè)微信掃碼登錄網(wǎng)頁(yè)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01JavaScript中的Array對(duì)象使用說(shuō)明
JavaScript中的Array對(duì)象是一個(gè)動(dòng)態(tài)的數(shù)組,也是一個(gè)Stack,還是一個(gè)Dictionary2011-01-01