Javascript 陷阱 window全局对象

 更新时间:2008年11月26日 12:31:22   作者:  
ff和ie6下都是同样的运行结果,看来不是bug,那究竟是为什么呢? 注意到:对象方法访问其对象的属性时|必须|加以this.(和java不一样).
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);
/*啊,代码混乱了。这看起来像一个很严重的陷阱!!*/

相关文章

  • JavaScrip变量声明关键字var、let、const详解

    JavaScrip变量声明关键字var、let、const详解

    在JavaScript中var、let和const是用于声明变量的关键字,但它们之间存在一些关键的区别,这篇文章主要介绍了JavaScrip变量声明关键字var、let、const的相关资料,需要的朋友可以参考下
    2025-04-04
  • ES6之Proxy的get方法详解

    ES6之Proxy的get方法详解

    这篇文章主要介绍了ES6之Proxy的get方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • javascript数组去掉重复

    javascript数组去掉重复

    去tx面试过几次,基本都会考到数组去重。其实平时工作中几乎不会用到,再者也没认真去了解过,所以基本上每次面到这里都会露出很大的马脚,面试自然也over了
    2011-05-05
  • JS中‘hello’与new String(‘hello’)引出的问题详解

    JS中‘hello’与new String(‘hello’)引出的问题详解

    这篇文章主要给大家介绍了关于JS中'hello'与new String('hello')引出的问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-08-08
  • JavaScript控制两个列表框listbox左右交换数据的方法

    JavaScript控制两个列表框listbox左右交换数据的方法

    这篇文章主要介绍了JavaScript控制两个列表框listbox左右交换数据的方法,实例分析了javascript操作列表框listbox的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • JavaScript设计模式中的观察者模式

    JavaScript设计模式中的观察者模式

    这篇文章主要介绍了JavaScript设计模式中的观察者模式,观察者设计模式适用于监听一对多的操作,例如监听对象属性的修改等等,观察者模式能够降低代码耦合度,提升可扩展性
    2022-06-06
  • 使用JS获取SessionStorage的值

    使用JS获取SessionStorage的值

    这篇文章给大家介绍了使用js获取sessionstorage中的值,首先获取它是为了将获得的信息输出或者alert(),其次,在静态页面中,如果使用sessionStorage就相当于在动态页面里连接了数据库一样,具体内容详情大家参考下本文
    2018-01-01
  • 带大家了解一下JavaScript常见的五个内存错误

    带大家了解一下JavaScript常见的五个内存错误

    这篇文章主要为大家介绍了JavaScript常见的五个内存错误,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • JavaScript实现电话号码格式化的解法小结

    JavaScript实现电话号码格式化的解法小结

    在 JavaScript 编程中,经常会遇到将给定数据转换为特定格式的问题,本文为大家整理了一些常用方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • JavaScript解决浮点数计算不准确问题的方法分析

    JavaScript解决浮点数计算不准确问题的方法分析

    这篇文章主要介绍了JavaScript解决浮点数计算不准确问题的方法,结合实例形式分析了javascript浮点数运算精度误差的原因以及相关的解决方法与具体操作技巧,需要的朋友可以参考下
    2018-07-07

最新评论