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 相关文章推荐
Javascript 汉字字节判断
Aug 01 Javascript
jquery 可排列的表实现代码
Nov 13 Javascript
jQuery.validate 常用方法及需要注意的问题
Mar 20 Javascript
使用js Math.random()函数生成n到m间的随机数字
Oct 09 Javascript
jQuery中ajax的get()方法用法实例
Dec 26 Javascript
JavaScript使用slice函数获取数组部分元素的方法
Apr 06 Javascript
深入分析javascript中console命令
Aug 14 Javascript
全面解析标签页的切换方式
Aug 21 Javascript
jQuery简单实现遍历单选框的方法
Mar 06 Javascript
详解使用路由延迟加载 Angular 模块
Oct 12 Javascript
HTML+JavaScript实现扫雷小游戏
Sep 30 Javascript
javascript实现贪吃蛇游戏(娱乐版)
Aug 17 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 ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
浅析php header 跳转
2013/06/17 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
利用php输出不同的心形图案
2016/04/22 PHP
关于PHP通用返回值设置方法
2017/03/31 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
Python实现带百分比的进度条
2016/06/28 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
python f-string式格式化听语音流程讲解
2019/06/18 Python
python调用自定义函数的实例操作
2019/06/26 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
SQL数据库笔试题
2016/03/08 面试题
Python如何实现单例模式
2016/06/03 面试题
执行总经理岗位职责
2014/02/03 职场文书
大学信息公开实施方案
2014/03/09 职场文书
售后服务承诺书范文
2014/03/26 职场文书
教师读书活动心得体会
2016/01/14 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers