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显示隐藏DIV的方法及代码实例
Apr 16 Javascript
JS定时器实现数值从0到10来回变化
Dec 09 Javascript
jQuery中Datatables增加跳转到指定页功能
Feb 08 Javascript
vue2.0多条件搜索组件使用详解
Mar 26 Javascript
JS按条件 serialize() 对应标签的使用方法
Jul 24 Javascript
Angularjs按需查询实例代码
Oct 30 Javascript
jQuery实现获取选中复选框的值实例详解
Jun 28 jQuery
layui结合form,table的全选、反选v1.0示例讲解
Aug 15 Javascript
js使用formData实现批量上传
Mar 27 Javascript
深入理解vue中的slot与slot-scope
Apr 22 Javascript
深入了解js原型模式
May 30 Javascript
微信小程序 云开发模糊查询实现解析
Sep 02 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数据记录代码
2008/06/07 PHP
php更新mysql后获取改变行数的方法
2014/12/25 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
js选项卡的实现方法
2015/02/09 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
浅析Python中signal包的使用
2015/11/13 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
python变量不能以数字打头详解
2016/07/06 Python
django session完成状态保持的方法
2018/11/27 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
HTML的form表单和django的form表单
2019/07/25 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
python excel转换csv代码实例
2019/08/26 Python
如何在 Django 模板中输出 "{{"
2020/01/24 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
HTML5新标签兼容——> 的两种方法
2018/09/12 HTML / CSS
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
毕业生班级鉴定评语
2015/01/04 职场文书
物业接待员岗位职责
2015/04/15 职场文书
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS