国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

小議Function.apply() 之一------(函數(shù)的劫持與對象的復(fù)制)

2019-11-21 02:26:37
字體:
供稿:網(wǎng)友
關(guān)于對象的繼承,一般的做法是用復(fù)制法: Object.extend

見protpotype.js 的實現(xiàn)方法:

復(fù)制代碼 代碼如下:
Object.extend = function(destination, source) { 
  for (property in source) { 
    destination[property] = source[property]; 
  } 
  return destination; 

除此以外,還有一種不太常見的方法:  Function.apply.

apply 方法能劫持(<<Ajax in Action>> 書中用到"劫持"一語,很生動啊)另外一個對象的方法,
繼承另外一個對象的屬性。
示范代碼如下:
Apply示范代碼 
復(fù)制代碼 代碼如下:
<script> 

function Person(name,age){   //定義一個類,人類  
    this.name=name     //名字  
    this.age=age       //年齡 
    this.sayhello=function(){alert("hello")} 


function Print(){            //顯示類的屬性 
    this.funcName="Print" 
    this.show=function(){      
        var msg=[] 
        for(var key in this){ 
            if (typeof(this[key])!="function") msg.push([key,":",this[key]].join("")) 
        } 
        alert(msg.join("/n")) 
    } 


function Student(name,age,grade,school){    //學(xué)生類 
    Person.apply(this,arguments) 
    Print.apply(this,arguments) 
    this.grade=grade                  //年級 
    this.school=school                    //學(xué)校 


var p1=new Person("jake",10) 
p1.sayhello() 

var s1=new Student("tom",13,6,"清華小學(xué)") 
s1.show() 
s1.sayhello() 
alert(s1.funcName) 
</script> 
 學(xué)生類本來不具備任何方法,但是在 Person.apply(this,arguments)  后,他就具備了 Person類的sayhello方法和
所有屬性。  在 Print.apply(this,arguments) 后就自動得到了  show() 方法。


本文,作為拋磚引玉,只對 apply 的用法(在對象繼承和函數(shù)劫持方面)做個小示范,其他更深入的應(yīng)用要
靠大家慢慢去領(lǐng)會了。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 朝阳县| 惠来县| 项城市| 临城县| 张家港市| 苗栗市| 岳阳市| 定日县| 松阳县| 玛曲县| 邳州市| 双峰县| 屏东县| 务川| 阜新市| 庆元县| 南投县| 马尔康县| 屏边| 蒙城县| 买车| 宜章县| 灵武市| 揭东县| 砚山县| 南昌市| 红原县| 探索| 津南区| 辽中县| 蓬安县| 河北省| 石渠县| 武冈市| 兴宁市| 枣强县| 威海市| 油尖旺区| 汝南县| 侯马市| 安达市|