Javascript 陷阱 window全局对象


Posted in Javascript onNovember 26, 2008

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);
/*啊,代码混乱了。这看起来像一个很严重的陷阱!!*/

Javascript 相关文章推荐
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
Mar 26 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
May 11 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
Dec 09 Javascript
javascript设计模式之对象工厂函数与构造函数详解
Jul 30 Javascript
javascript简易画板开发
Apr 12 Javascript
基于jstree使用AJAX请求获取数据形成树
Aug 29 Javascript
Javascript刷新页面的实例
Sep 23 Javascript
vue.js element-ui tree树形控件改iview的方法
Mar 29 Javascript
8个有意思的JavaScript面试题
Jul 30 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
May 01 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
Aug 08 Javascript
Javascript 对象的解释
Nov 24 #Javascript
javascript脚本调试方法小结
Nov 24 #Javascript
createElement动态创建HTML对象脚本代码
Nov 24 #Javascript
javascript innerHTML、outerHTML、innerText、outerText的区别
Nov 24 #Javascript
javascript call和apply方法
Nov 24 #Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
Nov 24 #Javascript
javascript 贪吃蛇实现代码
Nov 22 #Javascript
You might like
聊天室php&mysql(四)
2006/10/09 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
全面了解python中的类,对象,方法,属性
2016/09/11 Python
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
UGG英国官方网站:UGG UK
2018/02/08 全球购物
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
会计专业毕业生自荐信范文
2013/12/20 职场文书
汽车维修求职信
2014/06/15 职场文书
职代会闭幕词
2015/01/28 职场文书
篮球拉拉队口号
2015/12/25 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS