iteye_7272 2010-03-18 17:40
浏览 171
已采纳

对function对象的一个疑惑--求解

var a = function(){
    this.a = 0;
    console.log(this);
};

new a();//a
a();//b

 运行分别看下结果。求达人解释。

结果:

>>> new a();
Object { a=0}
Object { a=0}
>>> a();
Window portal.do?state=showPage

运行环境是firebug的console


问题补充

02221021 写道
对于this的scope, 通常有4种情况.

1 new 调用,  this就是生成的对象.

2 普通方法调用,  this指向window.

3 apply或者call,  this指向apply或者call的对象. 比如 (function (){ alert (this.b) }).call({b:1}). 这里的this是 {b:1}这个对象.

4 属性调用,  this指向该属性的拥有者. 比如a.b.c = function(){alert (this)}.  这个this是指向b的.


大概是这么回事, 说的不大严谨.


恩,明白了些。你说的第4中正是我例子本来要的目的。谢过。
但是

2.好像是不对的如果
this.a==undefined

结果是true。

还有个趣事,见图,这难道是传说中的...
  • 写回答

2条回答 默认 最新

  •  无冥  2010-03-18 17:40
    关注

    对于this的scope, 通常有4种情况.

    1 new 调用, this就是生成的对象.

    2 普通方法调用, this指向window.

    3 apply或者call, this指向apply或者call的对象. 比如 (function (){ alert (this.b) }).call({b:1}). 这里的this是 {b:1}这个对象.

    4 属性调用, this指向该属性的拥有者. 比如a.b.c = function(){alert (this)}. 这个this是指向b的.

    大概是这么回事, 说的不大严谨.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog