小议Function.apply() 之一------(函数的劫持与对象的复制)

 更新时间:2006年11月30日 00:00:00   作者:  
关于对象的继承,一般的做法是用复制法: Object.extend

见protpotype.js 的实现方法:

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

除此以外,还有一种不太常见的方法:  Function.apply.

apply 方法能劫持(<<Ajax in Action>> 书中用到"劫持"一语,很生动啊)另外一个对象的方法,
继承另外一个对象的属性。
示范代码如下:
Apply示范代码 
复制代码 代码如下:
<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){    //学生类 
    Person.apply(this,arguments) 
    Print.apply(this,arguments) 
    this.grade=grade                  //年级 
    this.school=school                    //学校 


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

var s1=new Student("tom",13,6,"清华小学") 
s1.show() 
s1.sayhello() 
alert(s1.funcName) 
</script> 
 学生类本来不具备任何方法,但是在 Person.apply(this,arguments)  后,他就具备了 Person类的sayhello方法和
所有属性。  在 Print.apply(this,arguments) 后就自动得到了  show() 方法。


本文,作为抛砖引玉,只对 apply 的用法(在对象继承和函数劫持方面)做个小示范,其他更深入的应用要
靠大家慢慢去领会了。

相关文章

  • layer.confirm()右边按钮实现href的例子

    layer.confirm()右边按钮实现href的例子

    今天小编就为大家分享一篇layer.confirm()右边按钮实现href的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 利用js来实现缩略语列表、文献来源链接和快捷键列表

    利用js来实现缩略语列表、文献来源链接和快捷键列表

    本文主要对利用js来实现缩略语列表、文献来源链接和快捷键列表的方法进行详细分析介绍。具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • ajax如何实现页面局部跳转与结果返回

    ajax如何实现页面局部跳转与结果返回

    AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新,本篇文章给大家介绍ajax如何实现页面局部跳转与结果返回,感兴趣的朋友一起来学习
    2015-08-08
  • JavaScript禁用右键单击优缺点分析

    JavaScript禁用右键单击优缺点分析

    在本篇文章里小编给大家分享了关于JavaScript禁用右键单击优缺点分析,有需要的朋友们学习下。
    2019-01-01
  • 如何利用moment处理时间戳并计算时间的差值

    如何利用moment处理时间戳并计算时间的差值

    前端很多场景都会涉及到对时间的处理,我所用得最多的库是moment,下面这篇文章主要给大家介绍了关于如何利用moment处理时间戳并计算时间的差值的相关资料,需要的朋友可以参考下
    2022-04-04
  • js实现for循环跳过undefined值示例

    js实现for循环跳过undefined值示例

    这篇文章主要介绍了js实现for循环跳过undefined值,结合实例形式分析了js使用for循环针对数组的遍历、判断、运算等相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • echarts控制x轴和y轴name位置并加轴箭头代码示例

    echarts控制x轴和y轴name位置并加轴箭头代码示例

    搞数据展示,很多朋友都会用到免费的echarts,下面这篇文章主要给大家介绍了关于echarts控制x轴和y轴name位置并加轴箭头的相关资料,需要的朋友可以参考下
    2024-01-01
  • 三步实现ionic3点击退出app程序

    三步实现ionic3点击退出app程序

    这篇文章主要为大家详细介绍了三步实现ionic3点击退出app程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • javascript内置对象Date案例总结分析

    javascript内置对象Date案例总结分析

    今天总结javascript内置对象Date的使用,并且写一个重要的网页倒计时的核心算法案例,有需要的朋友可以借鉴参考下希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Web componentd组件内部事件回调及痛点剖析

    Web componentd组件内部事件回调及痛点剖析

    这篇文章主要为大家介绍了Web componentd组件内部事件回调示例及其痛点的剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-11-11

最新评论