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 鼠标拖动对象 可让任何div实现拖动效果
Nov 09 Javascript
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
Nov 14 Javascript
Shell脚本实现Linux系统和进程资源监控
Mar 05 Javascript
AngularJS 过滤器(自带和自建)详解
Sep 19 Javascript
Angular.js实现注册系统的实例详解
Dec 18 Javascript
Jquery鼠标放上去显示全名的实现方法
Feb 06 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
理解javascript async的用法
Aug 22 Javascript
浅谈Vue render函数在ElementUi中的应用
Sep 06 Javascript
vue router总结 $router和$route及router与 router与route区别
Jul 05 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
Aug 08 Javascript
vue中 v-for循环的用法详解
Feb 19 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函数学习之PHP函数点评
2012/07/05 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
毕业生个人投资创业计划书
2014/01/04 职场文书
教师个人剖析材料
2014/02/05 职场文书
核心价值观演讲稿
2014/05/13 职场文书
预备党员群众意见
2015/06/01 职场文书
宣传稿格式范文
2015/07/23 职场文书
初级职称评定工作总结
2015/08/13 职场文书
MySQL三种方式实现递归查询
2022/04/18 MySQL
python画条形图的具体代码
2022/04/20 Python