javascript写的代理函数
来源:互联网 发布:怎么重装windows xp 编辑:程序博客网 时间:2024/05/17 08:39
(function(){
var _ = function(name, args){
if (name) {
this.name = name
}
if (args) {
this.args = args
}
}
_.prototype.lambda = function(handler, scope){
if (handler) {
return this.affix(function(){
var args = new Array();
var i = 0;
for (var j = 0; j < arguments.callee.lamdas.length; j++) {
var v = arguments.callee.lamdas[j];
if (v.hasOwnProperty("_") && (typeof v == "function")) {
var fnt = v();
args.push(fnt.g(arguments[i++]));
}
else if (v == window["_"]) {
args.push(arguments[i++]);
}
else if ((typeof(v) == "object") && (v instanceof window["_"])) {
args.push(_(v).apply(arguments[i++]));
}
else {
args.push(v);
}
}
args.concat((Array.prototype.slice.call(arguments)).slice(i));
if (arguments.callee.handler instanceof Function) {
return arguments.callee.handler.apply(arguments.callee.scope, args);
}
else {
return arguments.callee.scope[arguments.callee.handler].apply(arguments.callee.scope, args);
}
}, {
handler: handler,
scope: scope,
lamdas: (Array.prototype.slice.call(arguments)).slice(2)
});
}
return undefined;
}
_.prototype.affix = function(fn, args){
for (var j in args) {
fn[j] = args[j];
}
return fn;
}
_.prototype.get = function(name){
var fnt = function(){
return new _(name, (Array.prototype.slice.call(arguments)).slice());
};
fnt["_"] = true;
return fnt;
}
_.prototype.g = function(target){
return target ? target[this.name] : undefined;
}
window._ = new _();
var _ = function(name, args){
if (name) {
this.name = name
}
if (args) {
this.args = args
}
}
_.prototype.lambda = function(handler, scope){
if (handler) {
return this.affix(function(){
var args = new Array();
var i = 0;
for (var j = 0; j < arguments.callee.lamdas.length; j++) {
var v = arguments.callee.lamdas[j];
if (v.hasOwnProperty("_") && (typeof v == "function")) {
var fnt = v();
args.push(fnt.g(arguments[i++]));
}
else if (v == window["_"]) {
args.push(arguments[i++]);
}
else if ((typeof(v) == "object") && (v instanceof window["_"])) {
args.push(_(v).apply(arguments[i++]));
}
else {
args.push(v);
}
}
args.concat((Array.prototype.slice.call(arguments)).slice(i));
if (arguments.callee.handler instanceof Function) {
return arguments.callee.handler.apply(arguments.callee.scope, args);
}
else {
return arguments.callee.scope[arguments.callee.handler].apply(arguments.callee.scope, args);
}
}, {
handler: handler,
scope: scope,
lamdas: (Array.prototype.slice.call(arguments)).slice(2)
});
}
return undefined;
}
_.prototype.affix = function(fn, args){
for (var j in args) {
fn[j] = args[j];
}
return fn;
}
_.prototype.get = function(name){
var fnt = function(){
return new _(name, (Array.prototype.slice.call(arguments)).slice());
};
fnt["_"] = true;
return fnt;
}
_.prototype.g = function(target){
return target ? target[this.name] : undefined;
}
window._ = new _();
})()
样例:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>New Web Project</title>
<script type="text/javascript" src="_.js">
</script>
<script type="text/javascript" src="jquery-1.8.0.js">
</script>
<script>
function a(c, b,f){
alert(c + "=======" + b+"---"+f);
}
_.lambda(a, this, _.get("kk"),_.get("name"), "hello")({kk:"lh"},{name:"wl"});
</script>
</head>
<body>
<h1>New Web Project Page</h1>
</body>
</html>
- javascript写的代理函数
- 我写的Javascript/VBScript函数,
- 用javascript写cookies的几个函数
- c# aspx 写onclientclick 的javascript函数
- 写些关于Javascript函数的东西
- Jquery 及 javascript写函数的方法
- JavaScript一个通用于代理和不代理的绑定事件函数
- JavaScript的事件代理
- JavaScript的事件代理
- JavaScript的事件代理
- JavaScript的事件代理
- javascript的事件代理
- JavaScript的事件代理
- JavaScript的事件代理
- JavaScript的事件代理
- 使用JavaScript写的一个删除HTML代码的函数
- 刚写的一个用JavaScript格式化数字的函数
- 原生Javascript写的一些常用的工具函数
- DedeCMS修改模板当鼠标有焦点时图片是呈现黄色块
- 一些收藏,标记一下-20120823
- Java Socket 网络编程常见异常
- gdb
- 带标签的break和continue语句(Java、C++)
- javascript写的代理函数
- FPGA_8_20
- [SGU]104. Little Shop of Flowers
- 搭建一个小型的asterisk电话系统 (五、增加efax功能)
- 冒泡法排序
- 50个jquery代码片段
- FPGA_8_21
- HDU 1153 Magic Bitstrings (找规律)
- 排序算法之三 插入排序