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 相关文章推荐
用jquery修复在iframe下的页面锚点失效问题
Aug 22 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
Oct 09 Javascript
JavaScript从0开始构思表情插件
Jul 26 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
vue-router 学习快速入门
Mar 01 Javascript
JS简单实现数组去重的方法示例
Mar 27 Javascript
基于vue.js快速搭建图书管理平台
Oct 29 Javascript
详细分析jsonp的原理和实现方式
Nov 20 Javascript
webpack热模块替换(HMR)/热更新的方法
Apr 05 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
Dec 09 Javascript
JS解惑之Object中的key是有序的么
May 06 Javascript
JavaScript实现简单的音乐播放器
Aug 14 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读MYSQL中文乱码的解决方法
2006/12/17 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
2015/10/19 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
2020/10/01 Javascript
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
python3对接mysql数据库实例详解
2019/04/30 Python
对python 中class与变量的使用方法详解
2019/06/26 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
马来西亚网上购物:Youbeli
2018/03/30 全球购物
医药工作者的求职信范文
2013/09/21 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
机关出纳岗位职责
2014/04/03 职场文书
车辆委托书范本
2014/10/05 职场文书
小学校长个人总结
2015/03/03 职场文书