求教一个函数的理解

wangnewton 2009-01-03 06:24:13
(
function($ns) {
....
}
)(using('app.nntex'));

其中using的定义如下:
function using(p){
p = p.split(/\s*\.\s*/g);
var m = window, d;
p.each(function(n){
if(d) d += '.' + n;
else d = n;

if(!m[n]) m[n] = { $name : d };
else if(!m[n].$name) m[n].$name = d;

m = m[n];
});
return m;
}
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
侯坤 2009-01-04
  • 打赏
  • 举报
回复
up
ytx98 2009-01-04
  • 打赏
  • 举报
回复
mark & up
不悲不喜 2009-01-04
  • 打赏
  • 举报
回复
UP
liuhua19841201 2009-01-04
  • 打赏
  • 举报
回复
去看下jquery就知道了
手写 2009-01-04
  • 打赏
  • 举报
回复
( 
/*
这是个脚本的闭包写法,即加载后就运行,(function s(a){alert(a);})("123")就会运行s("123")
在这里,定义了一个未知名的函数体.传参为$ns,当加载后运行(using('app.nntex'))
如果你不明白function($ns),也没什么,他就是没有名字而已,或者你给他加个名字也行
function s($ns),在这里传进去的参数为using('app.nntex').
如果想理解深,最好将参数打印(function($ns) {alert($ns);})(using('app.nntex'));
*/

(function($ns) {
....
}
)(using('app.nntex'));
//其中using的定义如下:
/*
在这里看看using要搞些什么东东
*/
function using(p){
p = p.split(/\s*\.\s*/g); //先将传进来的参数p格式化成数组,以.分割
var m = window, d; //定义变量 注意以后m就是window了
/*
对于下面的这个,可能有点不好理解,或许你已经引了其他的库来扩展array
在这里p既然是个array那么each方法也是专门为array提供的.
其实他是一个对array扩展的编例执行的方法,很多js库里都有扩展.
我这里有个 大概是这样子Array.prototype.each=function(f){for(var i=0;i<this.length;i++) f(this[i],i,this)} ;
也就是说p.each(func(s){alert(s)});就意味着这数组里面的每一个都要去当做参数执行一下func(s)方法;
好原理说完,看下面的实例:
*/
p.each(function(n){
if(d) d += '.' + n;
else d = n; //这个不用说了吧,把传近来d的给组装成.间隔的,也就是"asdc.as.s.d"形式.

if(!m[n]) m[n] = { $name : d }; //如果window中不存在n,就给他注册一个让他的$name属性为d的域(叫类也行)
else if(!m[n].$name) m[n].$name = d;//如果有就给属性赋值

m = m[n]; //将这个类给m
}); //循环下去直到下标
return m; //传回这个注册好的类
}

看明白了吧,主要的在using方法上,他负责将你传进的名字注册成类然后传回
有一些可能不明白,但是这个跟很多面向对象的语言差不多.都是asd.ds.a.sda形式的
在这里面,window是最高级别
也就说 var fun1="";其实是window.fun1="";
还有,方法function也是对象,在js叫一等对象
比如:

var fun2=function(){
this.fun3=function(){
return "";
}
}
在js调用是fun2.fun3
你给的方法里,是调用外部方法,将方法名字注册到本页面并返回

杨哥儿 2009-01-03
  • 打赏
  • 举报
回复
这代码写得太紧凑了.
让人真搞不明白是什么意思.
变量使用太不规范了.
rjzou2006 2009-01-03
  • 打赏
  • 举报
回复
using类拟于C#的using的

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧