易截截图软件、单文件、免安装、纯绿色、仅160KB

javascript wrapper函数

在设计javascript的继承体系时,有一个重要需求,方法链。通俗地说,说是在方法中调用父类的同名方法。类似java的this.super().method()。如何把父类的同名方法包装到子类中呢?这就要用到wrapper函数。之所以叫wrapper,而不是wrap,因为它比wrap更加wrapper。比如像Ext那种深度继承的结构中,如果父类没有找祖父,祖父没有找曾祖父,沿着原型链层层上溯,以获取它所需要的功能。此外,wrapper函数在jQuery也有应用,好像分为三种wrapAll,wrapinner,wrap,专门用来对付IE的table或其他DOM。可能还有其他用处,不管了,先看如何实现它。
一个普通的函数

var greeting = function(world){
return "hello " + world +"!";
};
alert(greeting("world"));


var greeting = function(world){
return "hello " + world +"!";
};
alert(greeting("world"));

运行代码
我们把它塞进更深一层的作用域,非bind函数。

var wrap= function(fn){
return function(){
return fn.apply(null,arguments);
};
};


var wrap= function(fn){
return function(){
return fn.apply(null,arguments);
};
};
var greeting = function(world){
return "hello " + world +"!";
};
alert(greeting("world"));
alert(wrap(greeting)("world"))

运行代码
但这只是延迟了它的执行时间而已。上面函数中的null,也可以换成window。

var wrap= function(fn){
return function(){
return fn.apply(window,arguments);
};
};


var wrap= function(fn){
return function(){
return fn.apply(window,arguments);
};
};
var greeting = function(world){
return "hello " + world +"!";
};
alert(greeting("world"));
alert(wrap(greeting)("world"))

运行代码
因为总要人去调用函数的,null没有此能力,就由window上。现在我们就是要在这个位置上做文章,把换成this。如果没有进一步的改进,这里的this还是window的替身。下面就开始复杂了,先分解一下写法,降低阅读难度,就像jQuery那样把它掰成三部分:

var wrapper= function(fn){//这里改一下名。
var temp = function(){


相关文档:

关于Javascript解析XML跨浏览器的尝试

javascript的跨浏览器的问题真的很烦人,
以前做AJAX的时候都是用responseText 因为功能要求都不是很复杂
现在想做一些RSS的合整,觉得用JS来做能节省很多的服务器资源
尽量往RIA的这边靠拢吧。
因为手头上没有一份完整的DOM的文档,解析XML来真的可以说的焦头烂额,
虽然用FOR IN 能读出对象的所有属性和方法,可惜这 ......

JavaScript 之继承

 Javascript 本身并不直接支持继承,不过javascript强大之处就在于其无比的灵活性,你基本可以为所欲为。
1. 通过在子类中调用父类的构建函数来实现继承。
2. 用Prototype来实现继承。
3. 常见framework是如何实现继承的。
4. 总结 ......

Google 排名中的 10 个最著名的 JavaScript 库

JavaScript 是 Web 开发与设计中不可或缺的东西,不管是一个简单的网页还是一个专业的站点,也不管你是高手还是菜鸟,如今
JavaScript 库越来越强大,可以胜任许多复杂的工作,然而同时,人们在众多 JavaScript 库面前又觉得无所适从,本文,我们将使用
Google 搜索出排名前 10 位的 JavaScript 库,并对它们逐一进行介绍 ......

JavaScript语法集锦(二)

function function xx(){...} 定义函数
isNumeric                   判断是否是数字
innerHTML xx=对象.innerHTML 输入某对象标签中的html源代码
innerText divid.innerText=xx 将以div定位以id命名的对象值设为XX
locati ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号