搞不懂得js,说明白了分全给了,越明白越好

seesea125 2010-09-14 10:56:04
在js的基础上封装的,common.js如下
var Tecent = Tecent || {};
Tecent.Common = Tecent.Common || ((function() {
var Common = {
extend: function(base, obj) {
for (var i in base) {
obj[i] = base[i];
}
return obj;
},
Inheritance: function(base, obj) {
for (var i in base.prototype) {
obj.prototype[i] = base.prototype[i];
}
return obj;
}
}
Common.extend({
Trim: function() {
return this.replace(/^\s+/, '').replace(/\s+$/, '');
}
}, String.prototype);
window.Co = Common;
return Common;
})());
使用方法
Forms.Panel = Forms.Panel || ((function() {
var Panel = function(n, i) {
this.Init(n, i);
}
Tecent.Common.Inheritance(Forms.Base, Panel);//为什么要先这样继承,再接下来extend呢?
Co.extend({
Controls: null,
Init: function(n, i) {
this.Controls = [];
if (i == undefined) {
i = n;
this.Element = $('<span></span>');
}
else {
this.Element = $(n);
}
if (i) {
this.Show()
}
else {
this.Hide();
}
},

//添加一个控件到容器
Add: function(obj) {
if (obj.Element) {
this.Element.append(obj.Element);
this.Controls.push(obj);
}
else {
this.Element.append($(obj));
}
return this;
},
//删除容器//或容器内控件
Remove: M(function() {
this.Element.remove();
this.Controls = [];
}, function(obj) {
if (obj.Element) {
obj.Element.remove();
this.Controls.RemoveKey(obj);
}
else {
$(obj).remove();
}
})
}, Panel.prototype);

return Panel;
})());
1 为什么扩展和继承要这么写,可以这么写?而不是平时看书上说的,用call,或者apply去实现继承呢?extend是重写了jquery的方法吗?
extend: function(base, obj) {
for (var i in base) {
obj[i] = base[i];
}
return obj;
},
Inheritance: function(base, obj) {
for (var i in base.prototype) {
obj.prototype[i] = base.prototype[i];
}
return obj;
}
他们做了什么工作?为什么要这么做?
2 为什么panel的使用可以
var panel=new Forms.Panel()呢?
而var xyz = xyz || {};
xyz = xyz || (function() {
var refn = function(paramx,paramy) {
return paramx + paramy;
}
return refn;
} ());
debugger;
var thisxyz = new xyz();
这样却是错误的?其实这里错误我明白了,但刚才的panel明明定义后已经执行了,为什么还可以var panel=new Forms.Panel()呢?
...全文
250 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lawbc 2010-09-15
  • 打赏
  • 举报
回复
这个。。。。暂时还不会,我只会用
gs8716 2010-09-15
  • 打赏
  • 举报
回复
仔细看还是能看到一点眉目的,说起来就有点困难
even0220 2010-09-15
  • 打赏
  • 举报
回复
Mark
uP!
zeng563492220 2010-09-15
  • 打赏
  • 举报
回复
学了也不会!汗!
mark620 2010-09-15
  • 打赏
  • 举报
回复
MrSLin 2010-09-15
  • 打赏
  • 举报
回复
推荐个http://blog.csdn.net/niuyongjie/archive/2009/11/15/4810835.aspx#
还有,如果仔细看《JavaScript高级程序编程》里面3、4两章的有关对象和对象继承,就会很清晰了。
MrSLin 2010-09-15
  • 打赏
  • 举报
回复
0.怎么又是js的东西放到.net版面?
1.Inheritance和extend的先后还是必要的,虽然都是对Panel.prototype操作。Inheritance是把Form.Base.prototype中的属性和方法拷贝到Panel.prototype中,那么extend是对Panel.prototype的扩展,所以扩展的方法或属性可能会和从Form.Base.prototype中继承的重复,那么就需要重写覆盖掉。如果颠倒了,你先扩展,后继承,可能你扩展的方法都被父类的重写了,这肯定不是你想要的结果。
2.为什么扩展和继承要这么写?
这里的继承是通过原型prototype来实现的,call和apply其实是通过构造函数方式继承的,你可以看看call和apply的实现就明白了。怎么写都不重要,能实现功能就好了。我不知道extend是不是重写了jQuery的方法,但是我肯定,你把Inheritance和extend两个函数单独拉出来,可以实现对象间的继承,里面的写的也很简单、很明确,就是扩展么。
3.最后一个问题,另个帖子看到回了。
jshi123 2010-09-15
  • 打赏
  • 举报
回复
1.
Inheritance是把Form.Base.prototype中的所有成员复制到Panel中,让Panel具有Form.Base的特性,模拟实现继承。
extend是把一些新的属性和方法添加/覆盖到Panel.prototype中,让Panel在Form.Base基础上具有新的特性

2.
Forms.Panel是function,而xyz是对象,所以不能new
把Forms.Panel的定义里面的内容简化掉以后是这样的:
Forms.Panel = Forms.Panel || ((function() {
var Panel = function(n, i) {}
return Panel;
})());
这样可以看得比较清楚,执行外层的匿名方法后,返回的是内层的Panel变量,它是一个function,最终被赋予Forms.Panel,所以Forms.Panel就是一个function,可以new
  • 打赏
  • 举报
回复
仰视、 学习
lpc444 2010-09-14
  • 打赏
  • 举报
回复
学习了,我连如何编辑js文件都不知道...
q107770540 2010-09-14
  • 打赏
  • 举报
回复
关 注
写给准备用mcafee8.5i企业版的朋友 mcafee是最受公认的监控最灵敏的防病毒软件 但是真正的精髓部分应该是它的文件访问保护部分(以及端口阻挡,注册表防护等等) 首先,若您想使用mcafee 我建议您要学会自己动手DIY最适合自己的规则 为自己的机器“量身定做”一套属于自己的,独一无二的细密而强大的保护规则 (别人做的规则不一定是适合您的) 您对系统的熟悉度高,mcafee就强大 反之,如果您对此一窍不通的话,mcafee也就发挥不出它应有的强大保护力了 可以这样:只要您懂得并会熟练的运用好mcafee(8.5i)的访问保护 无论什么新型病毒,什么变种木马,加了什么壳,加了多少层壳 在您开着监控的情况下基本上都是无法对您的系统造成任何侵害的 附上我自己编写的部分规则: (仅供参考) 禁止在C盘根目录创建文件 禁止在WINDOWS目录中新建任何文件 禁止修改WINDOWS目录中的任何文件 禁止删除WINDOWS目录中的任何文件 禁止在WINDOWS根目录下新建任何文件 禁止在system32根目录下新建任何文件 禁止在C盘中新建,修改任何SCR文件(防范某些木马) 禁止cscript.exe运行 禁止mshta.exe运行 禁止format.com运行(防范恶意格式化行为) 禁止hh.exe运行 禁止cmd.exe运行 禁止修改文件访问控制权限 禁止私自启用计划运行任务程序 防范远程注册表操作,禁止调用regsvc.dll 禁止在C盘中新建任何VXD文件 禁止私自创建共享文件夹 禁止telnet.exe运行 禁止在C盘中新建任何EXE可执行文件 禁止在C盘中新建任何COM可执行文件 禁止在C盘中新建任何DLL动态连接库文件 防范脚本病毒,禁止scrrun.dll 禁止在C盘中新建任何批处理BAT文件 禁止在C盘中新建任何VBS脚本文件 禁止访问TEMP文件夹,防止恶意安装程序 禁止在C盘中新建任何JS脚本文件 禁止在C盘中新建任何JSE脚本文件 禁止对Access数据库文件进行任何操作 禁止在C盘中新建任何VBE文件 禁止C盘中新建,运行任何WSH文件 禁止C盘中新建任何WSF文件 禁止在本地新建,修改,执行任何AUTORUN.INF文件 禁止在C盘中新建任何SYS文件 禁止在Downloaded Program Files目录中新建任何文件 禁止添加桌面文件 禁止启用远程桌面程序 禁止在开始菜单中添加项目 禁止在C盘中新建ZIP文件(防范某些蠕虫) 禁用NetMeeting网络会议程序 禁止在system.ini中创建和写入内容 禁止在win.ini中创建和写入内容 禁止在wininit.ini中创建和写入内容 禁止在本地新建任何*desktop.ini文件 禁止java目录下的程序私自运行 禁止在C盘中新建CHM文件 保护本机所有EXE可执行文件(防止修改) 禁止私自在Program Files根目录下新建文件 禁止nwscript.exe运行 禁用自动下载连接管理器 禁止未经许可的控件注册 禁止script.dll运行 禁用SQL Server 客户端网络工具 禁止创建,修改或删除磁盘的卷标(名称) 禁止调用路由跟踪命令 防范某些网络蠕虫扩散,禁止私自运行PING命令 禁止私自用源目录中的同名文件替换目标目录中的文件 禁止私自更改当前登录用户的权限 禁止私自调用文件属性修改工具 禁止对Boot.ini配置文件执行编辑操作 防止多用户同时登陆,禁用termsrv.dl 禁止使用NetMeeting功能访问远程桌面 禁止“私自指定某些程序在指定的时间运行” 禁止在C盘中新建任何PIF文件 禁止私自修改本地用户帐户数据库 禁止在Default User目录下新建任何文件 禁止在LocalService目录下新建任何文件 禁止在NetworkService目录下新建任何文件 禁止在Application Data目录下新建任何项目 保护本机所有EXE可执行文件(防止删除) 禁止网络检测命令net.exe运行 禁止在PCHEALTH目录中新建,修改,删除任何文件 禁止Config目录下新建,修改,删除任何文件 禁止在security目录下新建,修改,删除任何文件 禁止在system目录下新建,修改,删除任何文件 禁止在Registration目录下新建,修改,删除任何文件 禁止在drivers目录下新建,修改,删除任何文件 禁止启用系统还原程序 禁止控制台程序tlntsvr.exe运行 禁止私自调用系统配置编辑器 禁止在C盘中新建CMD文件(防范某些蠕虫) 禁止在C盘中新建HTT文件(防范某些病毒) 保护WINDOWS的"系统文件替换"备份目录 保护WINDOWS的"最后一次正确启动配置"备份文件目录 禁止在C盘中新建,修改任何CPL文件(防范某些木马) 禁止在C盘中新建,修改任何DOT文件(防范宏病毒) 禁止在C盘中新建,修改任何DOC文件(防范宏病毒) 禁止运行Windows脚本宿主工具 禁止在C盘中新建,修改任何BFF文件(防止宏病毒寄生) 禁止读取Cookies文件 禁止创建新的Cookies文件 这些规则看起来似乎让人很头晕,但其实这还只是属于框架部分(我们还需要制定一些特定规则) 这些规则看似复杂,但是却不会对我电脑的以及机器上程序的正常使用造成任何妨碍 您必须学会用两至三条的规则对某个区域形成一个防护体系 并且能够使电脑最终在这些复杂而强悍的规则的防护下运行自如 有些用户发现他们使用了mcafee后的“主要工作”就是需要不停的添加排除进程 好在这些规则是可以逐渐积累的,而且是可以将其最终保存起来的 (终将会形成一套属于您自己的强大的防护体系) 我喜欢用mcafee的另一个原因是它让我感觉到了自己是自己电脑真正的“主宰者” 什么程序(甚至后台服务)可以被运行,什么程序不可以被运行 什么文件可以被修改,删除,什么文件不可以 什么地方可以被写入(创建)新文件,什么地方不可以新建任何文件 什么地方只可以被写入什么格式的文件,全都由我了算,呵呵。(知识若不分享 实在没有意义 http://www.yidabu.com) 能用好mcafee您就会明白其顶尖的监控和强大的保护规则配合起来的好处 而对于那些不懂得如何设置和运用好mcafee的保护规则的初级用户来讲 呵呵,mcafee同样是一个令人头疼的“梦魇”。 mcafee自定义规则在系统中表示 使用工具可以查看注册表自定义规则,随意导入、修改和合并自定义规则,见我的另一帖子。 对于显示的结果各项含义举例如下: 文件规则: UserString(用户命名) UR14(系统使用名称) "A47 禁止私自启用命令行运行工具"(用户规则名称) UserEnforce(阻止) UR14 1(选) UserReport(报告) UR14 0(不选) UserProcess(用户进程) UR14 {Include(包含) *;Exclude(排除) Explorer.EXE} UserRule(用户规则) UR14 G_User {File(文件) R(读)W(写)X(执行)C(创建)D(删除) { Include C:\\WINDOWS\\system32\\cmd.exe } } 端口规则: UserString UR126 "A32 禁止(监视)一切高端动态\\私有端口的连接尝试行为" UserEnforce UR126 1 UserReport UR126 1 UserProcess UR126 {Include *} UserRule UR126 G_User {Port(端口) I(入)O(出)UT {Include 49152 65535} } 注册表规则: UserString UR70 "8-401 RD 淇濇姢\[鏄剧ず鎵 鏈夋枃浠\] K" UserEnforce UR70 1 UserReport UR70 1 UserProcess UR70 {Include *} UserRule UR70 G_User {Key(注册表) CWD {Include HKULM/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Advanced/Folder/Hidden/**} } 没有技术含量,只为比我更菜的人能读懂。只发卡饭,其它坛子不发了。
mcafee是最受公认的监控最灵敏的防病毒软件但是真正的精髓部分应该是它的文件访问保护部分(以及端口阻挡,注册表防护等等)首先,若您想使用mcafee我建议您要学会自己动手DIY最适合自己的规则为自己的机器“量身定做”一套属于自己的,独一无二的细密而强大的保护规则(别人做的规则不一定是适合您的)您对系统的熟悉度高,mcafee就强大反之,如果您对此一窍不通的话,mcafee也就发挥不出它应有的强大保护力了可以这样:只要您懂得并会熟练的运用好mcafee(8.5i)的访问保护无论什么新型病毒,什么变种木马,加了什么壳,加了多少层壳在您开着监控的情况下基本上都是无法对您的系统造成任何侵害的附上我自己编写的部分规则:(仅供参考)禁止在C盘根目录创建文件禁止在WINDOWS目录中新建任何文件禁止修改WINDOWS目录中的任何文件禁止删除WINDOWS目录中的任何文件禁止在WINDOWS根目录下新建任何文件禁止在system32根目录下新建任何文件禁止在C盘中新建,修改任何SCR文件(防范某些木马)禁止cscript.exe运行禁止mshta.exe运行禁止format.com运行(防范恶意格式化行为)禁止hh.exe运行禁止cmd.exe运行禁止修改文件访问控制权限禁止私自启用计划运行任务程序防范远程注册表操作,禁止调用regsvc.dll禁止在C盘中新建任何VXD文件禁止私自创建共享文件夹禁止telnet.exe运行禁止在C盘中新建任何EXE可执行文件禁止在C盘中新建任何COM可执行文件禁止在C盘中新建任何DLL动态连接库文件防范脚本病毒,禁止scrrun.dll禁止在C盘中新建任何批处理BAT文件禁止在C盘中新建任何VBS脚本文件禁止访问TEMP文件夹,防止恶意安装程序禁止在C盘中新建任何JS脚本文件禁止在C盘中新建任何JSE脚本文件禁止对Access数据库文件进行任何操作禁止在C盘中新建任何VBE文件禁止C盘中新建,运行任何WSH文件禁止C盘中新建任何WSF文件禁止在本地新建,修改,执行任何AUTORUN.INF文件禁止在C盘中新建任何SYS文件禁止在Downloaded Program Files目录中新建任何文件禁止添加桌面文件禁止启用远程桌面程序禁止在开始菜单中添加项目禁止在C盘中新建ZIP文件(防范某些蠕虫)禁用NetMeeting网络会议程序禁止在system.ini中创建和写入内容禁止在win.ini中创建和写入内容禁止在wininit.ini中创建和写入内容禁止在本地新建任何*desktop.ini文件禁止java目录下的程序私自运行禁止在C盘中新建CHM文件保护本机所有EXE可执行文件(防止修改)禁止私自在Program Files根目录下新建文件禁止nwscript.exe运行禁用自动下载连接管理器禁止未经许可的控件注册禁止script.dll运行禁用SQL Server 客户端网络工具禁止创建,修改或删除磁盘的卷标(名称)禁止调用路由跟踪命令防范某些网络蠕虫扩散,禁止私自运行PING命令禁止私自用源目录中的同名文件替换目标目录中的文件禁止私自更改当前登录用户的权限禁止私自调用文件属性修改工具禁止对Boot.ini配置文件执行编辑操作防止多用户同时登陆,禁用termsrv.dl禁止使用NetMeeting功能访问远程桌面禁止“私自指定某些程序在指定的时间运行”禁止在C盘中新建任何PIF文件禁止私自修改本地用户帐户数据库禁止在Default User目录下新建任何文件禁止在LocalService目录下新建任何文件禁止在NetworkService目录下新建任何文件禁止在Application Data目录下新建任何项目保护本机所有EXE可执行文件(防止删除)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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