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入门之基本函数详解
Oct 21 Javascript
js实现精美的图片跟随鼠标效果实例
May 16 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
Sep 18 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
May 03 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
Feb 10 Javascript
node.js实现回调的方法示例
Mar 01 Javascript
详解Javascript获取缓存和清除缓存API
May 25 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
Jan 25 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
Jul 18 Javascript
openLayer4实现动态改变标注图标
Aug 17 Javascript
关于vue的列表图片选中打钩操作
Sep 09 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 快速生成 Flash 动画的方法
2007/03/06 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
PHP积分兑换接口实例
2015/02/09 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
Python urlopen()函数 示例分享
2014/06/12 Python
Python反射用法实例简析
2017/12/22 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
python pycharm的安装及其使用
2019/10/11 Python
python如何查看安装了的模块
2020/06/23 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
开工仪式策划方案
2014/05/23 职场文书
文秘应届生求职信
2014/07/05 职场文书
放弃继承权公证书
2015/01/23 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书