当前位置: 首页 > 图文教程 > 网络编程 > Javascript > Javascript 陷阱 window全局对象

Javascript
鼠标移动到一张图片时变为另一张图片
JS画图(非VML)--兼容IE/FF
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
jQuery的一些注意
找到一点可怜的关于dojo资料,谢谢作者!
JS获取IUSR_机器名和IWAM_机器名帐号的密码
用js计算页面执行时间的函数
JS的IE和Firefox兼容性集锦
标准布局应用:对联与旗帜
XHTML-Strict 内允许出现的标签
自动生成文章摘要[JavaScript 版本]
飞鱼(shqlsl) javascript作品集
prototype 1.5相关知识及他人笔记
XP折叠菜单&仿QQ2006菜单
用Javascript轻松制作一套简单的抽奖系统
使用脚本控制网页Table的显示隐藏(全代码)_AX
Javascript代码混淆综合解决方案-Javascript在线混淆器
用 JavaScript 迁移目录
用简单的脚本实现一款漂亮的下拉菜单
建立完全独立的JS对象

Javascript 陷阱 window全局对象


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 107 ::
收藏到网摘: n/a

ff和ie6下都是同样的运行结果,看来不是bug,那究竟是为什么呢? 注意到:对象方法访问其对象的属性时|必须|加以this.(和java不一样). function Test(){
this.name='Test';
var name=2;
this.show=function(){
alert(name);
alert(this.name);//显示名字
}
}
var test=new Test();//通过构造器创建一个对象
test.show();//输出2和'Test' ,说明对象方法访问其属性时必须加this.
function Test2(){
this.name='Test2';
this.show=function(){
alert(name);
alert(this.name);
}
}
Test();//直接调用Test();
var test2=new Test2();
test2.show();//输出了Test,Test2,很奇怪啊,name问什么有值了,而且怎么会是'Test',bug?
alert(name);
window.show(); //输出2,test;怎么会有show函数呢,难道是bug
//依次输出2,Test;Test,Test2;Test;2,Test
// ff和ie6下都是同样的运行结果,看来不是bug,那究竟是为什么呢?
// 注意到:对象方法访问其对象的属性时|必须|加以this.(和java不一样).
// 整个页面是默认的是|window|对象,那么定义的函数,默认就是window对象的方法。
//直接直接调用函数时,相当于通过window.调用方法,那么方法内部的this自然就是\
//window对象,this.name='Test'就是为window对象加了一个属性.
// 那么当方法局部作用域内未定义name且调用alert(name),就相当于调用alert(window.name);
/*啊,代码混乱了。这看起来像一个很严重的陷阱!!*/