易截截图软件、单文件、免安装、纯绿色、仅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 中的window.open()函数用法

javascript 中的window.open()函数用法
经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,
或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项、版权信息
、警告、欢迎光顾之类的话或者作者想要特别提示的信息。其实制作这样的页面
效果非常的容易,只要往该页面的HTML里加入几段J ......

javascript小技巧

javascript小技巧
事件源对象
event.srcElement.tagName
event.srcElement.type
捕获释放
event.srcElement.setCapture(); 
event.srcElement.releaseCapture(); 
事件按键
event.keyCode
event.shiftKey
event.altKey
event.ctrlKey
事件返回值
event.returnValue
鼠标位置
event ......

Javascript的caller到底是什么时候定义的呢?

 网上很多文章都转载了一段话:对于函数来说,caller 属性只有在函数执行时才有定义。
到底是不是呢?可以用下面这段代码测试一下(这段例子也是转载文章中使用的):
function callerDemo() {
if (callerDemo.caller) {
var a= callerDemo.caller.toString();
alert(a);
} else {
......

JavaScript面向对象程序设计(1): 前言

 前一阵看EXTJS的几个例子,觉得JS的底子很差,特别是JavaScript面向对象程序设计方面的知识,于是在网上搜索,找到几篇好的博客,于是转过来,以备后面的学习使用。
本博客转于:http://devbean.javaeye.com/blog/404032
1. 基于对象还是面向对象?
面向对象技术是现代软件开发中的重要技术之一。面向对象变成的好 ......

JavaScript语法集锦(三)

 String对象的 charAt(x)对象 反回指定对象的第多少位的字母
                     lastIndexOf("string") 从右到左询找指定字符,没有返回-1
           ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号