博客园  :: 首页  :: 管理

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

Posted on 2006-11-27 17:12  Go_Rush  阅读(1996)  评论(3编辑  收藏  举报

关于对象的继承,一般的做法是用复制法: 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示范代码

 学生类本来不具备任何方法,但是在 Person.apply(this,arguments)  后,他就具备了 Person类的sayhello方法和
所有属性。  在 Print.apply(this,arguments) 后就自动得到了  show() 方法。


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



下一篇(链接已经修正):
用 Function.apply() 的参数数组化来提高 JavaScript程序性能