虽然之前写过一个关于作用域的博客,也提及过new一个对象是new的问题,但是绝得自己以前没将他们串联在一起,想了下,还是写一篇博客来扯皮吧

想象下,我们在使用date函数的时候,一时手快之下,我们写成了:

var location=Date();

alert(location);

很完美,当我们在浏览器运行的时候,就直接炸了,我们可能会郁闷,但是肯定不会绝得空虚寂寞冷的。

检查完之后我们发现是缺了个new,然后我们就会纳闷,不就少了个new么。而且就算是缺了个new,顶多也是报个错踹,为什么页面会直接炸了呢?

这个时候,我们翻开浏览器。搜索百度。我们知道了这么一段话:

因为构造函数是作为普通函数调
用的,忽略了 new 操作符。这个问题是由 this 对象的晚绑定造成的,在这里 this 被解析成了 window对象。

可能你还是有点蒙,所以这个时候我们把window对象打印出来看看

javascript:作用域与new的问题

为了正常打印,我修改了location为locationa了

现在,也许知道了作用域的重要性了吧,所以说,代码还是要好好写的,备注:不要在意360.

其实上面的这种情况也是很少见到的,所以就随便扯下皮。不多废话了

相关文章: