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

首頁 > 開發(fā) > JS > 正文

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

2024-09-06 12:44:22
字體:
供稿:網(wǎng)友
關(guān)于對象的繼承,一般的做法是用復(fù)制法: Object.extend

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

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

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

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

function Person(name,age){   //定義一個(gè)類,人類  
    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() 方法。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 太和县| 玉树县| 望城县| 辽宁省| 麟游县| 贞丰县| 奉化市| 拉萨市| 通河县| 龙里县| 鹿泉市| 宜宾县| 温泉县| 阿勒泰市| 呼伦贝尔市| 云安县| 屯昌县| 佛冈县| 湖口县| 常山县| 隆德县| 松滋市| 牟定县| 新建县| 凌云县| 永和县| 万盛区| 延庆县| 虎林市| 绥阳县| 星子县| 康保县| 澳门| 淮安市| 廊坊市| 镇康县| 常熟市| 黄冈市| 湖北省| 留坝县| 富川|