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 相关文章推荐
ajax上传时参数提交不更新等相关问题
Dec 11 Javascript
js获得参数的getParameter使用示例
Feb 26 Javascript
JQuery动态添加和删除表格行的方法
Mar 09 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
Apr 19 Javascript
详解React中的组件通信问题
Jul 31 Javascript
react中的ajax封装实例详解
Oct 17 Javascript
Angular2整合其他插件的方法
Jan 20 Javascript
p5.js 毕达哥拉斯树的实现代码
Mar 23 Javascript
laravel-admin 与 vue 结合使用实例代码详解
Jun 04 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
Jan 08 Javascript
JavaScript实现飞舞的泡泡效果
Feb 07 Javascript
解决vue-loader加载不上的问题
Oct 21 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防止SQL注入详解及防范
2013/11/12 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
简单实现PHP留言板功能
2016/12/21 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
HTML Dom与Css控制方法
2010/10/25 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
python 系统调用的实例详解
2017/07/11 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
pip安装python库的方法总结
2019/08/02 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
python ubplot使用方法解析
2020/01/10 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
竞赛口号大全
2014/06/16 职场文书
文明城市创建标语
2014/06/16 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
承诺书范本
2015/01/21 职场文书
公司捐书倡议书
2015/04/27 职场文书
辞职信格式范文
2015/05/13 职场文书