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时间戳格式化成日期格式的多种方法
Nov 11 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
JavaScript中String.prototype用法实例
May 20 Javascript
javascript表格的渲染组件
Jul 03 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
Sep 26 Javascript
JS实现DOM删除节点操作示例
Apr 04 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
Sep 05 Javascript
Angular(5.2->6.1)升级小结
Dec 27 Javascript
js实现无限瀑布流实例方法
Sep 16 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
Aug 18 Javascript
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
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 VS ASP
2006/10/09 PHP
php email邮箱正则
2008/10/08 PHP
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
解析php中call_user_func_array的作用
2013/06/07 PHP
destoon二次开发入门示例
2014/06/20 PHP
简单实现PHP留言板功能
2016/12/21 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
vue-router单页面路由
2017/06/17 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
Python中文字符串截取问题
2015/06/15 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
以下的初始化有什么区别
2013/12/16 面试题
施工人员岗位职责
2013/12/12 职场文书
优秀的茶餐厅创业计划书
2014/01/03 职场文书
出国签证在职证明
2014/01/16 职场文书
迎八一活动主题
2014/01/31 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
合伙经营协议书范本
2014/09/13 职场文书
博士给导师的自荐信
2015/03/06 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
新兵入伍决心书
2015/09/22 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫