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中暂停功能的实现代码
Mar 04 Javascript
用JavaScript调用WebService的示例
Apr 07 Javascript
JQuery Tips(4) 一些关于提高JQuery性能的Tips
Dec 19 Javascript
MooTools 页面滚动浮动层智能定位实现代码
Aug 23 Javascript
JS保存、读取、换行、转Json报错处理方法
Jun 14 Javascript
Sea.JS知识总结
May 05 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
May 27 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
May 12 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
May 17 Javascript
分析JS单线程异步io回调的特性
Dec 01 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
vue 微信扫码登录(自定义样式)
Jan 06 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执行速度全攻略(下)
2006/10/09 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
python del()函数用法
2013/03/24 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
python实现爬取千万淘宝商品的方法
2015/06/30 Python
Python实现将xml导入至excel
2015/11/20 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
python实现动态数组的示例代码
2019/07/15 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
党委班子对照检查材料
2014/08/19 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python