国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 景东| 灯塔市| 河源市| 娄烦县| 阆中市| 昌都县| 长沙市| 黄骅市| 罗山县| 渑池县| 绥化市| 佛坪县| 思茅市| 无极县| 铁力市| 兖州市| 鄂州市| 三亚市| 安龙县| 邵阳市| 四会市| 揭东县| 响水县| 崇礼县| 喀喇| 平南县| 肥乡县| 双鸭山市| 新乡市| 北辰区| 新平| 佛冈县| 郎溪县| 铜陵市| 武强县| 阳春市| 万宁市| 盐边县| 云南省| 玛多县| 彰化市|