首页 新闻 搜索 专区 学院

求js简单语句简释

0
悬赏园豆:5 [已解决问题] 解决于 2012-09-20 17:11

var obj=function(){

  if(this===window){return new obj();}

}

请问this===window是什么意思?

高明无思的主页 高明无思 | 初学一级 | 园豆:6
提问于:2012-09-20 16:37
< >
分享
最佳答案
1

调用你的代码有两种方式:

方式一:var t=obj();

方式二:var t=new obj();

在方式一中this是指向window的,方式二中this是指向obj的实例,所以如果this===window就可以判断是用方式一调用的。

这就是安全的构造函数用法,目地是让两种调用方式(用不用new)都可以。

不过你的代码在IE下可能会有问题,建议用下面的代码更好:

var obj=function(){
  if(!(this instanceof obj)){return new obj();}
}
收获园豆:5
artwl | 专家六级 |园豆:16526 | 2012-09-20 16:50

恢常感谢,我正是在研究你分享的那个用原生js写的缓动图片应用,没想到你就来了!

高明无思 | 园豆:6 (初学一级) | 2012-09-20 17:05

@高明无思: 呵呵,我去把代码改一下

artwl | 园豆:16526 (专家六级) | 2012-09-20 17:06

@artwl: 真热心,那我等着看了

高明无思 | 园豆:6 (初学一级) | 2012-09-20 17:10

@高明无思: 已经改了

artwl | 园豆:16526 (专家六级) | 2012-09-20 17:11

@artwl: 速度!

高明无思 | 园豆:6 (初学一级) | 2012-09-20 17:15
其他回答(3)
0

判断当前对象是不是window

田林九村 | 园豆:2367 (老鸟四级) | 2012-09-20 16:50
0

根据你方法被调用者的区别,this会不一样。这里有个function context 的概念,就是this的指向。这里就是判断该方法的调用者是不是默认的window对象;

===就是指向同一对象的意思,引用指向的是同一个对象才返回true,==是值相等

Ethan轻叹 | 园豆:996 (小虾三级) | 2012-09-20 16:53
0

var obj=function(){

  if(this===window){return new obj();}

}

就楼主这段代码,这个this对象就是window,

chenping2008 | 园豆:9836 (大侠五级) | 2012-09-20 17:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册