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 相关文章推荐
jquery.validate使用攻略 第三部
Jul 01 Javascript
JQuery防止退格键网页后退的实现代码
Mar 23 Javascript
基于jquery的固定表头和列头的代码
May 03 Javascript
jQuery简单实现网页选项卡特效
Nov 24 Javascript
JS简单限制textarea内输入字符数量的方法
Oct 14 Javascript
详解webpack+gulp实现自动构建部署
Jun 29 Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 Javascript
详解Angular4 路由设置相关
Aug 26 Javascript
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
JS中this的指向以及call、apply的作用
May 06 Javascript
vue+iview+less 实现换肤功能
Aug 17 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
Dec 03 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_pconnect()函数使用介绍
2012/02/05 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
jquery对表单操作2
2011/04/06 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
Python实现批量下载图片的方法
2015/07/08 Python
Python机器学习之决策树算法
2017/12/22 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
python基础 range的用法解析
2019/08/23 Python
Django异步任务线程池实现原理
2019/12/17 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
私有程序集与共享程序集有什么区别
2013/04/05 面试题
会计学应届毕业生推荐信
2013/11/04 职场文书
奶茶店创业计划书范文
2014/01/17 职场文书
西式婚礼主持词
2014/03/13 职场文书
大学同学会活动方案
2014/08/20 职场文书
节能环保演讲稿
2014/08/28 职场文书
幸福中国演讲稿
2014/09/12 职场文书
给客户的感谢信
2015/01/21 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python
JavaScript前端面试组合函数
2022/06/21 Javascript